Terinspirasi oleh github.com/JackToaster/Reassuring-Parable-Generator , pada gilirannya terinspirasi oleh xkcd.com/1263 . Kata-kata yang mungkin berasal dari meyakinkan.cfg dari repositori itu.
Setelah melihat reassuring.cfg (gunakan komit ke-12) disarankan untuk melihat tata bahasa yang cocok dengan keluaran (Outputnya adalah daftar semua string yang cocok dengan tata bahasa).
Tugas: Program Anda harus menampilkan semua 7968 baris case-sensitive dari teks persis yang terkandung dalam pastebin pastebin.com/2SNAJ1VH . Salinan pastebin disimpan di Wayback Machine
Berikut adalah contoh dari 33 garis motivasi dari pastebin:
Computers can't enjoy a salad.
Computers can't enjoy a cake.
Computers can't enjoy a ice cream cone.
Computers can't enjoy a meal.
Computers can't enjoy a drink.
Computers can't enjoy a steak.
Computers can't enjoy a chicken dinner.
Computers can't enjoy a piece of cake.
Computers can't enjoy a piece of pie.
Computers can't enjoy a cookie.
Computers can't enjoy a sandwich.
Computers can't taste a salad.
Computers can't taste a cake.
Computers can't taste a ice cream cone.
Computers can't taste a meal.
Computers can't taste a drink.
Computers can't taste a steak.
Computers can't taste a chicken dinner.
Computers can't taste a piece of cake.
Computers can't taste a piece of pie.
Computers can't taste a cookie.
Computers can't taste a sandwich.
Computers can't experience eating a salad.
Computers can't experience eating a cake.
Computers can't experience eating a ice cream cone.
Computers can't experience eating a meal.
Computers can't experience eating a drink.
Computers can't experience eating a steak.
Computers can't experience eating a chicken dinner.
Computers can't experience eating a piece of cake.
Computers can't experience eating a piece of pie.
Computers can't experience eating a cookie.
Computers can't experience eating a sandwich.
Aturan tantangan:
- Output baris dapat dipesan dengan cara apa pun yang Anda inginkan, tetapi 7968 semuanya harus disertakan.
- Outputnya harus sebagai string datar tunggal, bukan sebagai daftar string.
- Program Anda seharusnya tidak menerima input atau input kosong yang tidak digunakan.
- Program Anda tidak boleh mengambil data dari sumber daring apa pun.
- Satu baris tambahan baru adalah opsional.
Ini kode-golf , jadi kode terpendek menang.
code-golf
string
kolmogorov-complexity
grammars
fireflame241
sumber
sumber
No computer {can} {action}.
diulang dua kali, danComputers {cannot_present}
menghasilkan frasa seperti "Komputer tidak mampu". Disengaja?Jawaban:
Zsh , 765 byte
Ini mungkin hal pertama yang pernah saya tulis dalam zsh, tetapi ia memiliki fitur yang sangat nyaman untuk dapat mengubah array ke penjepit ekspansi (meskipun itu tidak senyaman seharusnya ... ). Jalankan dengan
zsh -P
(dihitung sebagai +1 byte), yang menyalaRC_EXPAND_PARAM
.Cobalah online!
sumber
JavaScript (ES6),
12341091 byteItu jumlah byte yang bagus untuk memulai! Saatnya bermain golf dengan tali besar itu.
Kurang golf:
Bagaimana?
(Ini adalah salah satu golf favorit saya sepanjang masa!)
Tata bahasa disimpan dalam array
G
, yang mengevaluasi hal ini:F
adalah fungsi yang memisahkan string oleh pembatas|
dan beralih melalui itu. Sejauh ini bagus.Sekarang apa yang terjadi dengan fungsi batin ini?
Pertama kita inisialisasi array
A
. Kemudian kami menemukan semua digit dalam string yang diteruskans
dan membangun sub-program: Menggunakan setiap digitn
, kami menghasilkanfor
-of
loop yang berulang melalui entri diG[n]
(disimpan sebagai propertiF
, karena fungsi dalam JavaScript juga objek). Loop kemudian ditambahkan satu demi satu.Misalnya, sub-program yang dihasilkan untuk
s="1 2 3"
mulai seperti ini:Pada setiap iterasi, sub-program menggantikan setiap digit
s
dengan penggantian yang sesuai, disimpanF[n]
, dan hasilnya didorong keA
. Sub-program ini adalaheval
ed danA
dikembalikan secara implisit.Dengan menggunakan
F
, sisa program hanya membangun sisa tata bahasa dari aturan produksi yang sudah ada; penggantian hanya didefinisikan oleh indeks satu digit diG
.sumber
f
. Jadi,f=
harus ditambahkan ke jumlah byte.F
bukanf
.)PHP, 877 byte
Ah itu tadi menyenangkan!
Silakan mencoba menggali satu byte lagi jika Anda bisa.
ungolfed
penjelasan
Outputnya dapat dibagi menjadi 48 chunks masing-masing dari 166 baris. Dalam setiap chunk, setiap baris dimulai dengan satu
Computers|A computer|No computer
diikuti oleh salah satu dari 14 kemampuan negatif (untukComputers
danA computer
) atau 9 positif (untukNo computer
).Saya menyandikan potongan-potongan ini menjadi masing-masing 6 bit, (3 mata pelajaran berbeda -> 2 bit lebih rendah; tombol berbagi topi positif dan negatif -> 4 bit atas), dan (mungkin jelas) menambahkan 65 untuk menggunakan nilai-nilai sebagai kode ASCII.
Dalam potongan ini, 8 kata kerja / kombinasi kata sifat untuk 11 makanan yang berbeda dan 13 kombinasi berbeda untuk 6 seni yang berbeda, selalu dalam urutan yang sama; jadi mereka hanya bisa dilewati, menggunakan kata kerja / kata sifat kunci untuk menentukan apakah saya harus daftar makanan atau minuman di loop berikutnya.
Satu bagian rumit tetap ada: Beberapa topi memerlukan bentuk kata kerja gerund; dan beberapa kata kerja kehilangan
e
dalam transformasi. Indeks cap memberi tahu apakah perlu atau tidak.(dan terima kasih atas urutan bit dalam pengkodean, saya cukup menggunakan karakter ASCII untuk perbandingan).
Tapi bagaimana caranya? Setelah juggling dengan regex untuk sementara waktu, saya hanya meletakkan di
1
manae
harus digantiing
dan di0
manaing
harus ditambahkan dan biarkanstrtr
melakukan pekerjaan.Begitulah kisah versi yang tidak diserang di atas. (1199 byte dikemas)
The golf terdiri terutama dalam 3 langkah:
strtr
diperluas ke semuanya kecuali subjek untuk memindahkan variabelstrtr
.strtr
.Kata ke-19,,
tast
digantikan dengan huruf kapital untuk menghilangkan beberapa tanda kutip.Saya ingin tahu apa yang akan terjadi jika saya juga mengkodekan kombinasi kata kerja / kata sifat.
Mungkin aku bisa mengalahkan Zsh; tetapi saya tidak yakin apakah saya cukup ingin mencoba.
sumber
Retina,
12491192 byteOutput melebihi batasan TIO. Saya ingin menggunakan
%`
tahapan untuk menghindari semua$%'¶$%`
tetapi untuk beberapa alasan yang tidak melakukan apa yang saya inginkan. Sunting: Disimpan 57 byte berkat @ fireflame241.sumber
ing
dan `Ito` masing-masing digunakan beberapa kali. Setiap panggilan ke1
,,2
dan5
didahului dan diikuti oleh spasi, sehingga ini dapat dimasukkan ke dalam substitusi. Demikian pula,6
dan7
selalu diikuti oleh titik.3
tampaknya hanya digunakan sekali.Bubblegum , 23353 byte
Ya. Sebagian besar tidak akan cocok dengan jawaban jadi ... Baik kode dan tautan TIO ada dalam pasta.
Kode (hexdump kode)
TIO link (output melebihi batasan TIO)
sumber