Cabaran Puisi !?

Sep 18, 2024 pm 05:41 PM

6 September 2024: Sebelum beralih kepada sebarang perbincangan tentang masalah itu sendiri, mari lihat latar belakangnya. Cabaran, cabaran matematik terbuka dalam buku.
Sebuah buku lama dari 1984 di Perpustakaan, nama yang saya terlupa tetapi saya mendapat gambaran tentang masalah yang sangat menarik yang ada di bahagian "Lagi untuk Dibaca...".
A, eh, Teka-teki Puisi... Ya, Anda dengar betul, masalah Matematik yang ditulis dalam bentuk Puisi Inggeris Lama.
Sejak, Sekolah Menengah saya langsung tidak menggemari Pantun, tetapi, yang ini menarik perhatian saya. Semasa saya membacanya, saya rasa seperti memahami sesuatu tetapi saya tidak memahaminya sepenuhnya. Menghabiskan lebih daripada enam jam untuk memahami teka-teki daripada dongeng, tentang naga dan sebagainya. Tetapi, satu perkara yang menyekat saya, permata. Untuk anda fahami sepenuhnya di sini adalah puisi:

**Di tanah Zopraria yang menakjubkan dan menakjubkan, di mana bintang-bintang bersenandung dengan tenang,

Dan naga purba menjaga langit, di mana masa dan pasang surut adalah satu,

Seorang bijak tua yang bijak hidup dengan tenang, yang pengetahuannya menjangkau sepanjang masa,

Tangan siapa yang boleh menenun benang sihir sebagai penyair membuat sajak.

Suatu hari, dari ketinggian syurga, di atas sayap api dan emas,

Hadiah diturunkan kepada orang bijak, seperti yang dikatakan mitos dan legenda:

Harta karun yang luas—permata yang bercahaya, seperti serpihan bintang,

Namun terikat dengan ramalan nasib sendiri, dengan peraturan setua Marikh.

Langit berbisik kepadanya, mesej yang lembut, tetapi jelas:

"Bagilah permata bercahaya ini kepada dua, dengan hati dan telinga yang berhati-hati.

Biarkan kedua-dua kapal buatan anda memegang berat yang hampir dikongsi bersama,

Keharmonian di antara mereka teguh, dalam keseimbangan yang terang dan adil.

Tetapi dengarlah kami, bijak, jika perlawanan yang sempurna hilang di luar ken anda,

Jangan putus asa dalam pencarianmu, kerana perjalananmu tetap tidak akan berakhir.

Kerana walaupun tip baki, namun anjakan sedikit mungkin,

Syurga akan tetap tersenyum kepadamu, dan berkat akan mengalir dengan percuma."

Orang bijak, dengan hati yang berani dan bijak, memulakan ujian sucinya,

Untuk fesyen kapal yang hampir sama, dan berikan bintang yang terbaik.

Naga mengelilingi tinggi di atas, sementara malaikat berhenti terbang,

Kerana dalam tugas keseimbangan ini meletakkan kebenaran semurni cahaya.

Permata, seperti rahsia masa lalu, sebelum orang bijak bertukar,

Dengan setiap pilihan, takdir terbentuk, dan hati mula terbakar.

Walaupun pekerjaan yang akan datang menakutkan, bintang-bintang masih mengagumi

Orang bijak yang berusaha, dengan tangan yang mantap, untuk mengimbangi api kosmik.

Dan bagaimana kisah itu sampai ke penghujungnya, di bawah langit yang tidak berkesudahan itu,

Hanya diketahui oleh mereka yang mencari, dan berani mengangkat mata.

Di alam Zopraria yang tidak terbatas, di mana kisah-kisah lama bertahan,

Ada yang mengatakan orang bijak masih berfikir, hati dan fikirannya bersih.

Kerana di syurga yang sunyi terletak keseimbangan yang baik dan jarang berlaku,

Keharmonian yang hanya boleh dikongsi oleh mereka yang mempunyai tangan yang stabil.**

Ini puisinya, nampak pelik kan. Dan apa yang ia lakukan dalam Buku Matematik. Ini bukan Teka-teki baharu, Teka-teki dari 1600-an lama, yang ditulis di suatu tempat di Westminster zaman moden.
Walau bagaimanapun, AI adalah kawan baik kita, betul, saya bertanya kepadanya apa jawapannya yang pelik, dan nampaknya ia tidak faham apa-apa.

A Poetic Challenge !?
Ia menyangka saya menciptanya, tetapi saya tidak melakukannya. Tetapi, bagaimana dengan GPT-4? Mari kita bertanya sama ada ia tahu apa-apa. Ia menjadi guru bahasa Inggeris saya.

A Poetic Challenge !?

A Poetic Challenge !?

Ok, Perlu menyahkodnya sendiri. Jom cuba.

9 September 2024: "Bagilah permata bercahaya ini kepada dua, dengan hati dan telinga yang berhati-hati.

Biarkan kedua-dua kapal buatan anda memegang berat yang hampir dikongsi bersama,

Keharmonian di antara mereka teguh, dalam keseimbangan yang terang dan adil.

Tetapi dengarlah kami, bijak, jika perlawanan yang sempurna hilang di luar ken anda,

Jangan putus asa dalam pencarianmu, kerana perjalananmu tetap tidak akan berakhir.

Kerana walaupun tip baki, namun anjakan sedikit mungkin,

Syurga akan tetap tersenyum kepadamu, dan berkat akan mengalir dengan percuma."

Ini adalah bahagian utama cerita dan mari kita menyahkodnya.
Selepas beberapa sumbang saran, maaf, menyeksa diri saya selama lebih daripada 3 hari berturut-turut, saya mendapat petunjuk.
Permata mungkin nombor, seperti yang dikatakan "dengan hati dan telinga yang berhati-hati."
Kapal mungkin set, tetapi konsep set tidak ditemui sehingga itu, jadi, saya mungkin silap.
Ekstrak di atas mungkin bermaksud dua set bilangan elemen yang sama, atau jumlah nombor dalam set adalah sama. Dan jika jumlahnya tidak sama, yang terdekat mungkin dipaparkan.

15 September 2024: Selepas beberapa pemikiran yang lebih kompleks dan menerbitkan banyak Artikel tambahan. Saya fikir begitu, saya mungkin telah menemui pemikiran terbaik saya pada puisi ini.
Walaupun puisi ini sudah lama, saya tidak dapat mencari penyelesaian lain untuk puisi ini. Tetapi, saya telah merangka soalan supaya Semua orang boleh faham, termasuk saya.

Cabaran

Dari perspektif C.S., ya, saya akan melakukan ini dalam bentuk C.S. dahulu dan kemudian Matematik kemudian.

Kami diberi senarai integer. Tugas kami adalah untuk membahagikan senarai kepada dua sub-senarai supaya perbezaan mutlak jumlah mereka diminimumkan. Jika perpecahan sempurna wujud, kita perlu mengembalikan dua senarai tersebut. Jika tidak, kembalikan dua senarai di mana perbezaan jumlah adalah paling kecil yang mungkin.

Contoh:

Input: [3, 1, 4, 2, 2]
Output: ([2, 4], [3, 1, 2])

Salin selepas log masuk

Dalam contoh ini, membahagikan senarai kepada [3, 4] dan [1, 2, 2] memberikan jumlah 7 dan 5, dan perbezaan mutlak diminimumkan kepada 2.

Pengekodan

Jadi mari kita mulakan pengekodan.
16 September 2024:

from itertools import combinations

def minimize_difference(lst):
    total_sum = sum(lst)
    n = len(lst)

    # Generate all possible subsets
    best_diff = float('inf')
    best_split = ([], [])

    for i in range(1, n//2 + 1):
        for subset in combinations(lst, i):
            subset_sum = sum(subset)
            other_sum = total_sum - subset_sum

            diff = abs(subset_sum - other_sum)

            if diff < best_diff:
                best_diff = diff
                best_split = (list(subset), [x for x in lst if x not in subset])

    return best_split

# Example usage
lst = [3, 1, 4, 2, 2]
result = minimize_difference(lst)
print("Split lists:", result)

Salin selepas log masuk

Hakikat bahawa kod itu berfungsi lebih baik daripada otak saya sungguh menakjubkan.

Penjelasan Kod

Masalah membahagikan senarai kepada dua sub-senarai supaya perbezaan mutlak antara jumlah mereka diminimumkan, berpunca daripada cabaran matematik yang menarik. Mari kita pecahkan cara kod Python yang disediakan menangani masalah ini.

  1. Memahami Masalah:
    Matlamatnya adalah untuk mencari dua sub-senarai daripada senarai yang diberikan supaya jumlah mereka sedekat mungkin. Jika pemisahan sempurna wujud (di mana jumlah kedua-dua sub-senarai adalah sama), kami mengembalikan dua sub-senarai itu. Jika tidak, kami mengembalikan pecahan di mana perbezaan antara dua jumlah adalah yang paling kecil.

  2. Struktur Kod:

Inti kod terletak pada penjanaan semua kemungkinan gabungan elemen daripada senarai untuk membentuk salah satu daripada sub-senarai. Setelah sub-senarai dipilih, sub-senarai yang lain secara automatik dibentuk oleh elemen yang tinggal. Kemudian, kami membandingkan jumlah mereka untuk mencari pembahagian yang terbaik dengan perbezaan yang minimum.

  1. Fungsi dan Konsep Utama:
  • kombinasi(lst, i): Ini menjana semua kemungkinan gabungan panjang i daripada senarai. Untuk setiap subset, ia mensimulasikan salah satu daripada sub-senarai, manakala elemen yang selebihnya membentuk sub-senarai yang lain.

  • total_sum = sum(lst): Ini mengira jumlah keseluruhan senarai. Ia digunakan untuk menentukan jumlah sub-senarai yang lain dengan mudah dengan menolak jumlah subset semasa daripada jumlah keseluruhan.

  • best_diff = float('inf'): Kami memulakan pembolehubah best_diff dengan nombor yang besar (infiniti) untuk menjejaki perbezaan terkecil yang ditemui setakat ini. Semasa kami melalui setiap pemisahan yang mungkin, kami mengemas kini nilai ini jika kami mendapati perbezaan yang lebih kecil.

  • Mencari pembahagian terbaik: Untuk setiap subset yang dijana, kod mengira perbezaan antara jumlah dua sub-senarai. Jika perbezaan semasa adalah lebih kecil daripada best_diff, pembahagian akan dikemas kini.

  1. Pertimbangan Prestasi:
    Kod ini menggunakan fungsi gabungan daripada perpustakaan itertools untuk meneroka subset dengan panjang yang berbeza. Walaupun pendekatan ini berfungsi dengan baik untuk senarai yang agak kecil, pendekatan ini mungkin tidak optimum untuk senarai yang lebih besar disebabkan oleh pertumbuhan eksponen subset yang mungkin. Untuk input yang lebih besar, algoritma yang lebih cekap seperti pengaturcaraan dinamik boleh dipertimbangkan.

  2. Contoh Output:

Dalam contoh yang disediakan:

   lst = [3, 1, 4, 2, 2]
   result = minimize_difference(lst)
   print("Split lists:", result)
Salin selepas log masuk

Fungsi membahagikan senarai kepada [2, 4] dan [3, 1, 2], menghasilkan jumlah masing-masing 6 dan 6, dan perbezaan minimum 0, yang merupakan penyelesaian optimum dalam kes ini.

  1. Mengapa ia berfungsi dengan baik: Dengan meneroka semua subset yang mungkin dan mengira perbezaan masing-masing, algoritma memastikan bahawa kita mencari pembahagian dengan perbezaan jumlah terkecil yang mungkin. Pendekatan brute-force ini intuitif dan berkesan untuk senarai bersaiz sederhana, memberikan penyelesaian yang jelas dan mudah kepada teka-teki purba ini.

Di atas yang anda lihat adalah petikan daripada diari saya, 100% benar. Tetapi versi yang lebih 'storified' tersedia melalui Storified Version yang sama

Atas ialah kandungan terperinci Cabaran Puisi !?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimana untuk menyelesaikan masalah kebenaran yang dihadapi semasa melihat versi Python di Terminal Linux? Bagaimana untuk menyelesaikan masalah kebenaran yang dihadapi semasa melihat versi Python di Terminal Linux? Apr 01, 2025 pm 05:09 PM

Penyelesaian kepada Isu Kebenaran Semasa Melihat Versi Python di Terminal Linux Apabila anda cuba melihat versi Python di Terminal Linux, masukkan Python ...

Bagaimana untuk mengelakkan dikesan oleh penyemak imbas apabila menggunakan fiddler di mana-mana untuk membaca lelaki-dalam-tengah? Bagaimana untuk mengelakkan dikesan oleh penyemak imbas apabila menggunakan fiddler di mana-mana untuk membaca lelaki-dalam-tengah? Apr 02, 2025 am 07:15 AM

Cara mengelakkan dikesan semasa menggunakan fiddlerevery di mana untuk bacaan lelaki-dalam-pertengahan apabila anda menggunakan fiddlerevery di mana ...

Bagaimana Mengajar Asas Pengaturcaraan Pemula Komputer Dalam Kaedah Projek dan Masalah Dikemukakan Dalam masa 10 Jam? Bagaimana Mengajar Asas Pengaturcaraan Pemula Komputer Dalam Kaedah Projek dan Masalah Dikemukakan Dalam masa 10 Jam? Apr 02, 2025 am 07:18 AM

Bagaimana Mengajar Asas Pengaturcaraan Pemula Komputer Dalam masa 10 jam? Sekiranya anda hanya mempunyai 10 jam untuk mengajar pemula komputer beberapa pengetahuan pengaturcaraan, apa yang akan anda pilih untuk mengajar ...

Bagaimana cara menyalin seluruh lajur satu data ke dalam data data lain dengan struktur yang berbeza di Python? Bagaimana cara menyalin seluruh lajur satu data ke dalam data data lain dengan struktur yang berbeza di Python? Apr 01, 2025 pm 11:15 PM

Apabila menggunakan Perpustakaan Pandas Python, bagaimana untuk menyalin seluruh lajur antara dua data data dengan struktur yang berbeza adalah masalah biasa. Katakan kita mempunyai dua DAT ...

Bagaimanakah uvicorn terus mendengar permintaan http tanpa serving_forever ()? Bagaimanakah uvicorn terus mendengar permintaan http tanpa serving_forever ()? Apr 01, 2025 pm 10:51 PM

Bagaimanakah Uvicorn terus mendengar permintaan HTTP? Uvicorn adalah pelayan web ringan berdasarkan ASGI. Salah satu fungsi terasnya ialah mendengar permintaan HTTP dan teruskan ...

Bagaimana untuk mendapatkan data berita yang melangkaui mekanisme anti-crawler Investing.com? Bagaimana untuk mendapatkan data berita yang melangkaui mekanisme anti-crawler Investing.com? Apr 02, 2025 am 07:03 AM

Memahami Strategi Anti-Crawling of Investing.com Ramai orang sering cuba merangkak data berita dari Investing.com (https://cn.investing.com/news/latest-news) ...

See all articles