Inspirasi . Diposting dengan izin .
Cetak salah satu "fakta" kalender XKCD yang mungkin:
Anda bisa mendapatkan teks dan struktur mentah dari implementasi referensi APL saya atau dari Jelaskan transkrip XKCD (termasuk teks judul tepat di bawah ilustrasi).
Aturan
Pada setiap simpul keputusan, harus ada kesempatan acak yang sama (pseudo-) dari setiap pilihan.
Anda dapat menggunakan semua huruf besar.
Anda harus menghasilkan tiga kalimat; pertanyaan, alasan, dan teks judul.
Tiga kalimat harus diakhiri dengan ?
, .
, dan .
masing-masing, dan terpisah satu sama lain oleh satu ruang.
Satu-satunya ruang putih tambahan yang dapat Anda sertakan adalah satu spasi tambahan dan / atau pemisah baris.
Contohnya
Did you know that the Latest Sunset drifts out of sync with the Zodiac because of time zone legislation in Indiana? Apparently it's getting worse and no one knows why. While it may seem like trivia, it has to be corrected for by GPS satellites.
Did you know that Leap Year happens later every year because of precession of the equator? Apparently scientists are really worried. While it may seem like trivia, it is taken advantage of by high-speed traders.
Did you know that Easter drifts out of sync with the atomic clock in Colorado because of a decree by the pope in the 1500s? Apparently scientists are really worried. While it may seem like trivia, it causes huge headaches for software developers.
Did you know that shark week happens at the wrong time every year because of an arbitrary decision by Benjamin Franklin? Apparently it causes a predictable increase in car accidents.
Aku ... maksudku ... aku ... Oke.Jawaban:
Befunge-93,
19591930 byteCobalah online!
Penjelasan
Dalam tiga baris pertama, kita mulai dengan membangun semacam tabel negara pada tumpukan, yang mewakili grafik dari semua kalimat yang mungkin. Entri tumpukan ini dikelompokkan menjadi pasangan, jadi pertama-tama ada item string, dan kemudian lompatan atau cabang. Bila perlu, grafik diisi dengan string kosong dan lompatan panjang nol untuk memenuhi persyaratan ini.
Loop utama kami kemudian dimulai dengan memunculkan angka, mewakili item string, dari tumpukan. Angka ini ditafsirkan sebagai offset ke tabel string di bagian bawah sumber. Tabel string pada dasarnya adalah sejenis daftar tertaut, yang dibungkus beberapa baris agar sesuai dengan ruang memori Befunge yang terbatas.
Setelah mengeluarkan string, item berikutnya pada stack adalah lompatan atau cabang. Jika jumlahnya kurang dari 32, itu adalah lompatan, yang kami interpretasikan dengan menjatuhkan banyak pasangan item dari tumpukan. Jika angkanya 32 atau lebih, itu adalah cabang, dan kami menggunakan nilai (minus 32) untuk mencari detail cabang dari tabel di baris terakhir sumber.
Entri dalam tabel cabang masing-masing terdiri dari hitungan, diikuti oleh daftar offset. Setelah kita tahu cabang mana yang akan digunakan, kita cukup menghasilkan angka acak, memodulasi jumlah cabang, untuk mencari offset yang sesuai. Offset ini kemudian diartikan sebagai lompatan, menjatuhkan jumlah item yang diperlukan dari tumpukan.
Kami ulangi proses ini, mengeluarkan string, lalu melakukan lompatan atau cabang, hingga kami kehabisan entri tumpukan. Pada titik itu, kita cukup mengeluarkan "." untuk menandai akhir kalimat terakhir, dan kemudian keluar.
sumber
Javascript (ES6),
1698151015061501 byteTerima kasih kepada 12Me21 untuk memperbaiki bug dalam kode, yang menambahkan 2 byte
f=
dandocument.write(f())
bukan bagian dari jumlah bytesumber
Python 2 , 1297 byte
-419 byte berkat ovs.
Cobalah online!
Kode aktual:
Itu melelahkan. Saya bahkan belum melakukan golf dasar. Seseorang tolong tuliskan skrip untuk golf ini.
sumber
Arang , 806 byte
Cobalah online! Tautan adalah untuk mengucapkan versi kode. Penjelasan:
sumber
R ,
190317511743 byteSolusi brute force sederhana. Mungkin ada cara untuk menurunkannya lagi.
Cobalah online!
sumber
JavaScript (ES6), 1275 byte
di mana
...
merupakan hasil dari menjalankanatob()
string ini dan mengganti\
dengan\\
,`
dengan\`
, 0x00 dengan\0
, dan 0x0D dengan\r
:Coba di sini, minus
btoa
:sumber
APL (Dyalog) , 1302 byte
Cobalah online!
Adám membantu dengan yang satu ini ... kemudian menantang saya untuk menyelesaikannya. : P
-11 terima kasih kepada Adám (menggunakan alat SBCS barunya, saya dapat menyalahgunakan penyandian tanpa biaya tambahan).
sumber
Haskell ,
19491938 byteCobalah online!(Memiliki 2 byte tambahan untuk
f=
)Kebanyakan menulis ini supaya saya bisa membuat struktur data. Ini pasti bisa diperbaiki tetapi saya lelah dan saya harus segera pergi. Saya pikir kapitalisasi sebagian besar benar, tetapi saya akan mengkonversikannya menjadi huruf besar jika salah. Itu tidak akan mengubah jumlah byte atau apa pun karena saya belum melakukan sesuatu yang aneh dengan data string.
Ide dasarnya adalah daftar pohon yang ditautkan di mana setiap simpul kosong (
E
), tanda baca (P
) atau label string dengan anak-anak. Semua node kecualiE
node memiliki simpul "pengikut" yang datang setelah mereka.EDIT: baru saja melihat kesalahan ejaan (saya menulis "tidak ada yang tahu mengapa" alih-alih "tidak ada yang tahu mengapa") jadi saya harus menambahkan byte untuk memperbaikinya tetapi saya juga menemukan beberapa kode yang dapat dihapus
sumber
APL (Dyalog Unicode) , 1593 byte
C←?∘≢⊃⊢
S←C'|'∘≠⊆⊢
∊'Did you know that '(C('the '(S'Fall|Spring')' Equinox ')('the '(S'Winter |Summer ')(S'Solstice |Olympics '))('the '(S'Earliest |Latest ')(S'Sunrise |Sunset '))('Leap ',S'Day |Year ')'Easter '('the '(S'Harvest|Super|Blood')' Moon ')'Toyota Truck Month '('Daylight Savings Time '~C's∘')'Shark Week ')(C('happens '(S'earlier|later|at the wrong time')' every year ')('drifts out of sync with the '(S'Sun |Moon |Zodiac |atomic clock in Colorado|',' Calendar ',⍨S'Gregorian|Mayan|Lunar|iPhone'))('might '(S'not happen|happen twice')' this year '))'because of '(C('time zone legislation in ',S'Indiana|Arizona|Russia')'a decree by the pope in the 1500s'((S'precession|libration|nutation|libation|eccentricity|obliquity')' of the '(S'Moon|Sun|Earth''s axis|equator|prime meridian|',' line',⍨S'international date|mason-dixon'))'magnetic field reversal'('an arbitrary decision by ',S'Benjamin Franklin|Isaac Newton|FDR'))'? Apparently '(C'it causes a predictable increase in car accidents'('it was even more extreme during the ',S'Bronze Age|Ice Age|Cretaceous|1990s')'that''s why we have leap seconds'('there''s a proposal to fix it, but it ',S'will never happen|actually makes things worse|is stalled in congress|might be unconstitutional')'scientists are really worried' 'it''s getting worse and no one knows why')'. While it may seem like trivia, it '(S'causes huge headaches for software developers|is taken advantage of by high-speed traders|triggered the 2003 Northeast Blackout|has to be corrected for by GPS satellites|is now recognized as a major cause of World War I')'.'
Cobalah online!
Menentukan dua fungsi pembantu dan kemudian menggunakannya dalam satu ekspresi raksasa:
C←
C (untuk C hoose) adalah?∘≢
angka acak hingga jumlah elemen dalam argumen yang⊃
diambil⊢
dari argumenS←
S (untuk S plit dan S terpilih) adalahC
memilih di antara argumen'|'∘≠
dimana-tidak-pipa⊆
dipartisi⊢
∊
ϵ nlist (flatten)C
memilih dari daftar string danS
memilih dari substring dari|
string yang dibatasi, dan ini hanya digunakan dalam kombinasi untuk membangun "fakta".sumber