Pemrograman Dikotomi (Secara harfiah)

33

Pertimbangkan sebuah pertanyaan yang ditulis dalam bahasa Inggris sederhana yang jawabannya melibatkan dua kata atau frasa yang cukup akurat (tetapi berpotensi cerdik) yang dapat dipisahkan oleh kata 'dan':

T: Apa dua sisi mata uang? A: kepala dan ekor

T: Apa cara terbaik untuk bepergian? A: pesawat terbang dan jetpack

T: Mengapa gagak seperti meja tulis? A: karena ada huruf 'b' di keduanya dan 'n' di keduanya

Tujuan

Tulis sebuah program yang, ketika dijalankan secara normal, menghasilkan pertanyaan seperti itu.

Ketika setiap karakter lain dihapus dari program yang dimulai dengan karakter kedua dan hasilnya dijalankan kembali, hasilnya harus apa pun yang ada di sebelah kiri 'dan' dalam jawaban.

Ketika setiap karakter lain dihapus dari program yang dimulai dengan karakter pertama dan hasilnya dijalankan kembali, hasilnya harus apa saja di sebelah kanan 'dan' dalam jawaban.

(Tanda 'dan' itu sendiri bukan keluaran.)

Contoh

Jika programnya adalah

A1B2C3D4E5F6G7H8I9

dan hasilnya

What are the two sides of a coin?

Maka output dari ABCDEFGHIseharusnya heads, dan output dari 123456789seharusnya tails.

Aturan tentang pertanyaan dan jawaban

  • Anda dapat menggunakan contoh pertanyaan saya tetapi saya mendorong Anda untuk membuat sendiri.
  • Pertanyaan dan dua bagian jawaban:
    • semua harus berbeda
    • harus menjadi bahasa Inggris bermakna tata bahasa umum
    • hanya boleh mengandung ASCII yang dapat dicetak (hex 20 hingga 7E)
  • Idealnya pertanyaan akan dikapitalisasi dan diselingi (tetapi jawabannya tidak perlu).
  • Pertanyaan harus minimal 30 karakter dan memiliki entropi di atas atau sama dengan 3,5. (Ketikkan string, tekan hitung , cari H terakhir (X) .)
  • Dua bagian jawaban (tidak termasuk di [space]and[space]antaranya) masing-masing harus memiliki setidaknya 5 karakter dengan entropi di atas atau sama dengan 2.
  • Kata 'dan' dapat muncul di bagian jawaban mana pun.

Aturan tentang kode

  • Tidak satu pun dari 3 cuplikan kode yang dapat:
    • berisi komentar atau hal lain yang biasanya diabaikan oleh kompiler / juru bahasa (jangan khawatir tentang menempatkan satu atau dua titik koma tambahan, tetapi jika Anda berpikir itu adalah komentar, itu mungkin adalah)
    • keluar dari program pada pertengahan eksekusi
  • Kode dapat berisi karakter apa saja, termasuk Unicode dan ASCII yang tidak dapat dicetak.
  • Mungkin memiliki jumlah karakter ganjil atau genap.
  • Output masuk ke stdout atau file atau apa pun yang tampaknya masuk akal. Tidak ada input.

Mencetak gol

Karena saya tidak ingin mendorong jawaban golf tetapi saya ingin mendorong jawaban yang lebih pintar lagi, penilaian akan menjadi sesuatu di antara kontes kode-golf dan popularitas:

Skor = (upvotes - downvotes) - floor((bytes in code that outputs question) / 3)

Skor tertinggi menang.

(Gunakan http://mothereff.in/byte-counter sebagai penghitung byte.)

Hobi Calvin
sumber
6
Gah, ini sangat sulit dilakukan dalam bahasa "normal" seperti JavaScript. Yang terjauh yang bisa saya dapatkan adalah sesuatu seperti x0=00;;. Tantangan besar!
Gagang Pintu
@ Doorknob minta maaf untuk mengempiskan perahumu, tetapi 00;secara tradisional diabaikan oleh kompiler ...
John Dvorak
2
Serius ... "apel" memiliki entropi Shannon 1,92 ???
John Dvorak
4
It may have an odd or even number of charactersApakah ada sejumlah karakter yang tidak aneh atau genap?
Snack
1
@Snack Itu membuat orang tahu bahwa dua bagian kode jawaban tidak perlu memiliki panjang yang sama.
Hobi Calvin

Jawaban:

55

Javascript (148 byte)

Menciptakan beberapa literal yang tidak masuk akal, dengan efek samping menciptakan tanda * untuk pertanyaan. (pemisahan melakukan hal yang sama, tetapi membuat tanda * untuk masing-masing jawaban).

"';"+alert( 'What is the ideal breakfast???')+/ " ;apl=e"rbta(k"esnc"r.armebplleadc ee g g s(" ) + " \/)k;e"/+ ",t'hceo 'c)a;kye= ailse rat (lpi)e "

Split:

";+lr('hti h da rafs??)/";p="baken".replace   (    /ke/ ,'co');y=alert(p) 

dan

'"aet Wa steielbekat?'+  alert("scrambled eggs")+"\);"+"the cake is a lie"

 

Pertanyaan: What is the ideal breakfast???

Jawaban: bacondanscrambled eggs

es1024
sumber
4
Ini adalah jenis kualitas yang saya sukai dari situs ini! Di mana lagi Anda bisa menemukan orang yang bisa melakukan ini ??
Cruncher
1
Saya telah mengambil kelas improvisasi (mungkin jelas) dan saya akan memberi Anda +1 di sini untuk nilai humor. Tapi seperti yang diketahui oleh semua insinyur ilmu aperture, kami adalah praktisi sains ... jadi sungguh, bagian paling lucu adalah membuat senjata yang rapi . :-)
Dr. Rebmu
29

Brainfuck (437 karakter)

Saya harus mengakui bahwa ini adalah program brainfuck pertama saya yang benar-benar melakukan sesuatu yang berarti. Program ini sangat dioptimalkan untuk sistem memori rendah karena hanya menggunakan 4 lokasi memori.

Pertanyaan: What are the two main groups of trees?

Jawaban: conifersdanbroadleafs

-+[[++++++++++++++++++++++[+>++++++[+>++++++++++++<>-+]+>+-+.++++++<+<+-+]+>+++++.+>++.+-..------.-<--..-+-+-+..->.-+-+-+.+<+++.+-+-+-+-+.++++.+++.+<.+>-+++-+++-+++-++.->]]++-+[[+-+-[[+++++++++++++++[>++>+++++>+++++++<<<-]>-->>---<++.+++++++++++++++++.-------.>.<<.>.>--.<++++.<.>>++.<+++.---.<.>>.+++.<++++++++++.<.>--.------------.++++++++.+++++.<.>-------.>-----.<++++++++.>+++.<+.>--.<<.>-.---------.<.>>+.--.<-..>+.<<[<++>-]<-.<]]]]

Loop utama

Program ini terdiri dari loop utama (yang sebenarnya bukan loop karena semua [] -blok dijalankan hanya sekali) dan dua bagian.

-+[[        // let answers enter
            * SNIP interleaved answer sections *
]]
++-+[[      // let odd answer and question enter
    +-+-[[  // let question enter
            * SNIP question section *
    ]]
]]

Jika Anda ingin menguji bagian secara independen, Anda harus mempertimbangkan loop utama. Lokasi 0 berisi -1 di jawaban genap, 1 di jawaban aneh dan 2 di bagian pertanyaan.

Bagian jawaban

Jawaban genap (instruksi aneh dihapus):

// location 0 contains minus 1 from main
// set location 1 = 10 * 10 minus 1 = 99 (c)
+++++++++++[>++++++++++<-]>-. // c
++++++++++++.-.     // on
-----.---.          // if
-.+++++++++++++.+.  // ers
<                   // goto 0 (which contains 0)
+-+-+-+-+-          // padding to match length of odd answer

Jawaban ganjil (bahkan instruksi dihapus):

// location 0 contains 1 from main
// set location 1 = 16 * 6 plus 2 = 98 (b)  location used for characters below 'l'
// set location 2 = 16 * 7 plus 2 = 114 (r) location used for 'l' and above
+++++++++++++++[>++++++>+++++++<<-]>++.>++. // br
---.<               // o
-.+++.              // ad
>---.<              // l
+.----.+++++.       // eaf
>+++++++.           // s
>                   // goto 3 (which contains 0)

Bagian pertanyaan

Saya memutuskan untuk menyimpan ruang untuk memisahkan lokasi karena nilainya berbeda secara drastis dari karakter lain. Ini memungkinkan ruang dicetak dengan <.>.

// location 0 contains 2 from main
// set location 1 = 17 * 2 minus 2 = 32 (space)
// set location 2 = 17 * 5 plus 2 = 87 (W)   location used for characters below 'r'
// set location 3 = 17 * 7 minus 3 = 116 (t) location used for 'r' and above
+++++++++++++++[>++>+++++>+++++++<<<-]>-->>---<++. // W
+++++++++++++++++.  // h
-------.>.<         // at
<.>                 // (space)
.>--.<++++.         // are
<.>                 // (space)
>++.<+++.---.       // the
<.>                 // (space)
>.+++.<++++++++++.  // two
<.>                 // (space)
--.------------.    // ma
++++++++.+++++.     // in
<.>                 // (space)
-------.>-----.     // gr
<++++++++.>+++.     // ou
<+.>--.<            // ps
<.>                 // (space)
-.---------.        // of
<.>                 // (space)
>+.--.<-..>+.       // trees
<<[<++>-]<-.<       // ? (value_of_space * 2 minus 1)

Pembaruan akhir

Dalam pembaruan akhir saya, saya mengoptimalkan perkalian sehingga instruksi minimum digunakan. Juga termasuk 'l' ke grup karakter kedua di bagian jawaban ganjil terbukti menjadi peningkatan besar. Penghematan karakter tunggal dalam jawaban aneh pada dasarnya berarti dua karakter dari seluruh program, karena itu juga mengurangi padding dari jawaban genap. Saya juga menghapus beberapa instruksi yang tidak perlu dari sana-sini dan saya rasa saya tidak bisa mengoptimalkan kode lebih jauh.

Mika Lammi
sumber
23

Gelombang - 84

Cukup bangga dengan yang ini

Program lengkap: Apa dua sisi mata uang? (menghibur)

echo What are two sides of a coin?  2>>xx  2>>cc&&eecchhoo  hteaaidlss  2>>xx  2>>cc

Hanya beberapa: kepala (file 'c')

eh htaetosdso  on 2>x >c&echo heads 2>x >c

Odds only: tails (file 'x')

coWa r w ie faci? >x 2>c&echo tails >x 2>c

Bekerja dengan mengarahkan output kesalahan ke file dalam kedua kasus.

Suram
sumber
Sudah memikirkan cara untuk membuatnya lebih pendek, tetapi itu harus menunggu sampai besok.
Kamis
3
Ini memiliki skor tertinggi sejauh ini: 12 - 28 = -16.
justhalf
20

Python - 104 96 (golf: 76)

Solusi saya agak sederhana (dan entah bagaimana bisa dibaca):

"";print 'What is the color of a zebra?' ;""
paraianat= "' b l a c k '"
aparaianat="'w h i t e'"

Keluaran:

What is the color of a zebra?
black
white

Jujur, saya menemukan ide untuk baris pertama dalam jawaban bitpwner.


Alternatif yang lebih mudah dibaca: - 113 105 97

"";print 'What is the color of a zebra?' ;""
"p r i n t ' b l a c k '" ;"p r i n t ' w h i t e '"

Alternatif yang lebih singkat: - 86 76

"";print'What is the color of a zebra?';""
"""";;pprriinntt''bwlhaictke''"""
Falko
sumber
"papan catur" juga memenuhi persyaratan.
Martin Ender
3
@ MartinBüttner Zebra. :-P
David Richerby
Oh saya suka zebra. Dan itu cocok dengan versi "golf" dengan pertanyaan tepat 30 karakter. Jadi saya sedikit memodifikasi solusi saya. :)
Falko
1
String yang dikutip tiga kali lipat bukanlah komentar, tetapi string multi-baris. Karena mereka juga digunakan sebagai string dokumen , mereka mungkin bingung dengan komentar.
Falko
1
Pertanyaan yang diperbarui hanya sepanjang 29 karakter.
Dennis
15

Rebmu : 79 karakter ATAU (37 + panjang (p1) + 2 * maks (panjang (p2), panjang (p3)))

Pertama saya akan memberikan solusi 79 karakter yang menanyakan Bahasa mana yang harus Anda pelajari? (entropi 4.0, 30 huruf tidak termasuk ?) dan menawarkan Anda saran Rebol dan [Merah] :

DD  11  DD :do dd {dd  {p{Which languages must you learn?}qt}} pp{{[RReebdo]l}}

Taktik unik yang tersedia di sini yang tidak dalam bahasa lain berasal dari mengambil keuntungan dari fakta bahwa kurung kurawal adalah pembatas string asimetris, yang dapat bersarang secara legal:

my-string: {"It's cool," said {Dr. Rebmu}, "for MANY reasons--like less escaping."}

Itu membuat saya menghasilkan solusi umum, yang dapat bekerja dengan mudah pada program apa pun yang tidak menggunakan urutan pelarian. Versi 79 karakter cukup sederhana untuk pintasan, tetapi untuk memuat sumber program yang sewenang-wenang untuk program p2 dan p3 Anda memerlukan templat lengkap. Seandainya kami menggunakan itu, itu akan menjadi 87 karakter:

DD  11  DD :do dd {dd  {p{Which languages must you learn?}qt}} ddoo{{pp{{[RReebdo]l}}}}

Pola untuk menggunakan bentuk umum ini adalah bahwa jika Anda memiliki tiga teks sumber karakter berurutan dari panjang variabel (mari kita gunakan contoh seperti AAA, BBBBB, CCCCCCC) Anda bisa mengkodekan mereka sebagai sesuatu di sepanjang baris:

DD  11  DD :do dd {dd  {AAAqt}} ddoo{{BCBCBCBCBC C C}}

(Catatan: Meskipun pola ini tidak akan berfungsi tanpa mengubah program yang menggunakan karakter escape, ini bukan cacat fatal. Mendapatkan kurung kurawal yang tidak tertandingi dalam string yang dibatasi oleh kurung memerlukan sesuatu seperti {Foo ^{ Bar}... tetapi Anda dapat dengan mudah menulis ulang menggunakan notasi string alternatif "Foo { Bar", dan case kombinasi dapat dikelola dengan menempelkan campuran string yang tidak terhapus.)

Jadi ... bagaimana dengan contoh? Setelah formulir umum tersedia, program karakter 573 ini dikumpulkan hanya dalam beberapa menit dari 3 solusi golf kode sebelumnya:

DD 11 DD: lakukan dd {dd {rJ N 0% rN Wa1m2j S {\ x /} D00 Hc & [u [Ze? Wa Qs ~ rpKw [isEL00c [skQd2k] [eEV? KQ [tlQ]] pcSeg - b00 [ eZ 1 5] 3] prRJ [si ~ dSPscSqFHs] eZ 1 [s + dCa + wM2cNO]]] Va | [mpAp2j] prSI ~ w { } Ls2w Wl h01tiVsb01n -1 chRVs { } hLceVn01qt} fd {hr {hr} [sn [{N sbeo [tIt0l1eV} 0e5gXN1 01L {5s0} C {1} 0 {0 Do5f0 0bMe1e0r0} 0]]] tMw9C9 Numz Jl [paN + [KperlCJBn [[ba sWS {B noJn] tt] {K, j} b P {. } Jika EZ - - n [N m {G otothestoreandbuysome more}] {T akeonedownandpassitar ound} c B w P lf]]}}

Jika ada yang ingin mencoba menulis program itu dalam bahasa pilihan mereka, dan berpikir mereka bisa mengalahkan 573, beri tahu saya. Saya akan memberi Anda reputasi besar jika Anda melakukannya - dengan asumsi bahasa pilihan Anda bukan Rebmu, karena saya tahu program-program itu tidak minimal. :-)

Jarak "boros" yang Anda dapatkan pada akhirnya adalah apa yang terjadi ketika p2 dan p3 memiliki panjang yang tidak seimbang. Tetapi ketiga program memiliki ukuran yang berbeda dalam hal ini sehingga tidak ada pasangan yang baik untuk memilih p2 / p3. (Saya memilih ini karena tidak ada data eksternal sebagai input, seperti labirin atau apa pun, bukan karena mereka memiliki panjang yang sama. Sementara saya bisa menulis program baru yang lebih optimal, saya sudah menghabiskan cukup waktu dan intinya adalah Anda tidak perlu menulis program baru ...)

Bagaimana itu bekerja

(Catatan: Saya mulai dengan pendekatan yang lebih "kreatif" yang tidak terlalu ramping tetapi lebih menarik. Saya memindahkannya ke entri di blog saya karena menggambarkan pendekatan ini sudah lama.)

Kunci di sini adalah tipuan "kode eval sebagai string" seperti beberapa entri lainnya, ia hanya memiliki kartu truf dari pembatas string asimetris. Saya akan mulai dengan menjelaskan cara kerja huruf 80 karakter.

Inilah program "keseluruhan", menyesuaikan ruang kosong untuk keterbacaan kasus ini:

DD 11                    ; assign 11 to dd (about to overwrite again)
DD :do                   ; make dd a synonym for DO (a.k.a. "eval")

; eval a string as source code that ends with QUIT (QT)
dd {dd  {p{Which languages must you learn?}qt}}

; we'll never get here, but whatever's here must be legally parseable
pp{{[RReebdo]l}}

Di sini kita akhirnya mengatur DD ke sinonim untuk DO (alias "eval"). Tetapi triknya adalah bahwa ketika program yang dibelah dua berjalan, mereka menjalankan kode yang efeknya hanya mendefinisikan D ke literal tidak berbahaya 1.

Inilah yang dibuat oleh kode aneh-karakter, spasi putih disesuaikan lagi:

D 1                      ; assign 1 to d
D d                      ; assign d to itself, so it's still 1
d                        ; evaluates to integer, no side effect
{d pWihlnugsms o er?q}   ; string literal, no side effect
p {Rebol}                ; print "Rebol"

Dan inilah kode genap:

D 1                      ; assign 1 to d
D:od                     ; URL-literal (foo:...), no side effect
d                        ; evaluates to integer, no side effect
{{hc agae utyulan}t}     ; string literal (well-formed!), no side effect
p {[Red]}                ; print "[Red]"

Sebenarnya untuk program yang tidak terbelah dua, dd {dd {(arbitrary code)qt}}akan mengeksekusi kode apa pun yang Anda inginkan. Namun, ada dua panggilan untuk mengevaluasi, bukan hanya satu. Itu karena sementara kawat gigi bersarang bekerja sangat baik dalam kode yang disisipkan, mereka mengacaukan perilaku eval DO. Karena:

do {{print "Hello"}}

Akan memuat string sebagai program, tetapi program itu berakhir menjadi hanya string konstan {print "Hello"}. Jadi trik yang saya gunakan di sini adalah untuk mengambil DD saya (memegang nilai fungsi yang sama dengan DO) dan menjalankannya dua kali. Halvers mengunyah bagian-bagian berbeda dari string tetapi mereka tidak mengunyah keduanya jika genap / keanehan adalah benar untuk konten, dan karena apa yang tertinggal di luar string setelah membagi dua hanyalah konstanta integral dmereka tidak berbahaya.

Dengan pola ini, tidak ada tantangan dalam menulis perilaku program ketika tidak dipotong setengah - Anda dapat memasukkan apa saja selama panjang karakter kode tersebut genap (aneh jika Anda menghitung QT, yang adalah QUIT). Jika Anda perlu mendapatkan angka genap dari angka ganjil, berikan spasi (jadi sebenarnya ada +1 di rumus saya di atas pada p1 untuk panjang program ganjil dari p1) . Triknya tampaknya untuk menulis kode yang disisipkan setelah itu, yang harus melewati parser jika tidak dibelah dua. (Ini tidak akan dijalankan karena QT, tetapi harus LOADable sebelum akan dieksekusi.)

Kasus ini sepele; ppmemuat baik sebagai simbol meskipun tidak terdefinisi, dan dibagi menjadi puntuk dicetak di setiap program setengah. Tapi kita bisa melakukan trik lain hanya dengan menggunakan string literal lagi. Program yang dibelah dua masih memiliki DO yang didefinisikan secara normal, jadi kita bisa saja mengatakan:

ddoo{{pp{{[RReebdo]l}}}}

Dengan memiliki satu-satunya bagian yang diambil oleh parser dalam keseluruhan kasus menjadi kata simbolis ddoodan string literal, kita kemudian dapat interleave dua program yang kita inginkan di dalam string literal dan tidak membuat marah parser. Versi yang dibelah dua hanya akan mengatakan:

do{p{Rebol}}

..dan...

do{p{[Red]}}

Seperti yang saya katakan, bagian ini terlihat akrab dengan solusi lain yang memperlakukan program sebagai string dan mengevaluasi mereka. Tetapi dalam kasus kompetisi, ketika program yang Anda kemas berisi string bersarang, itu melemparkan kunci pas untuk mereka. Di sini satu-satunya hal yang akan membuat Anda dalam kesulitan adalah penggunaan melarikan diri melalui caret ( ^) ... yang dapat dengan mudah diselesaikan.


(Catatan 'kecurangan' kecil: Saya menambahkan QT untuk "QUIT" dalam menanggapi masalah ini. Sebenarnya, saya sengaja menghapus singkatan untuk berhenti sebelum ... karena entah bagaimana saya pikir itu hanya baik untuk penggunaan konsol dan hanya mengambil ruang dua huruf jika tidak dalam REPL. Saya menambahkannya karena saya melihat saya salah, tidak menambahkannya untuk kasus ini secara khusus. Namun demikian, sebelum perubahan itu akan menjadi 2 karakter lagi. ketika saya pertama kali memposting solusinya ada bug di Rebmu yang membuatnya tidak berfungsi meskipun seharusnya ... sekarang berfungsi.)

Rebmu
sumber
Anda benar-benar menciptakan bahasa pemrograman Anda sendiri?
Suara
2
@ tjt263 Lebih baik memikirkan kode-golf "encoding" dari bahasa Rebol yang ada . Orang-orang telah melakukan hal serupa misalnya dengan Pyth , yang pada dasarnya menyingkat Python. Tetapi Rebmu memiliki perbedaan yang cukup menarik yaitu sebenarnya dapat dimuat oleh parser Rebol, dan "kompatibel". Anda dapat masuk ke Rebol setiap saat di tengah-tengah itu, lihat misalnya Hourglass . Senang mendiskusikannya di Rebol dan obrolan Merah jika Anda mau.
Dr. Rebmu
15

Perl 186 139 135

"";print'What are the best things in life?';""&&pprriinntt("'hceraurs ht hyeo ulra meennetmaiteiso'n s   o f   t h e i r   w o m e n ")

Apa hal terbaik dalam hidup?

"pitWa r h ettig nlf?;"&print('crush your enemies'                 )

hancurkan musuhmu

";rn'htaetebs hnsi ie'"&print"hear the lamentations of their women"

mendengar ratapan wanita mereka

Menggunakan jawaban yang tidak terlalu panjang:

Perl 79 72

"";print'What are my preferred weapons?';""&&pprriinntt("'smwaocredss'")

What are my preferred weapons?(30Byte, H (X) = 3.76) swords(H (X) = 2,25) dan maces(H (X) = 2,32)

Thaylon
sumber
9

Python - 139 103

"";print'What are the ingredients for success?';""; ";" ;id=='"RUaniincboorwnss'";;pprriinntt  id++"'"'

What are the ingredients for success?-> UnicornsdanRainbows

Uji:

c="\"\";print\'What are the ingredients for success?\';\"\"; \";\" ;id==\'\"RUaniincboorwnss\'\";;pprriinntt  id++\"\'\"\'"
exec c        # What are the ingredients for success?
exec c[::2]   # Unicorns
exec c[1::2]  # Rainbows
print 
print c[::2]  # ";rn'htaeteigeinsfrsces'";"";d="Unicorns";print d+''
print c[1::2] # "pitWa r h nrdet o ucs?;" ; i='Rainbows';print i+""

Versi lama:

# What are the ingredients for success?
"";print(('What are the ingredients for success?'));""; ";" ;"pHrEiRnEt (C'OUMnEiSc oZrAnLsG'O)"; ";" ; "p,r iTnOtN(Y' RTaHiEn bPoOwNsY'.)"
# Unicorns
";rn('htaeteigeinsfrsces')";"";print('Unicorns');"";", TONY THE PONY."
# Rainbows
"pit(Wa r h nrdet o ucs?);" ; "HERE COMES ZALGO" ;  print('Rainbows')
Vektor
sumber
6

Haskell, 117

Harus bekerja dengan paradigma fungsional Haskell berarti bahwa segala sesuatu harus ditetapkan ke variabel atau dikomentari dengan garis --atau blok {- -}komentar; menjalankan fungsi omong kosong tanpa tugas keluar. Jadi, untuk menjaga diriku tetap waras, aku menyimpan pertanyaan dan jawaban sesingkat yang diizinkan oleh peraturan.

Pertanyaan: Apa yang bisa saya tidak punya cukup?

main=putStrLn{---}"What can I not have enough of?"{- }
=u"Scrank=e"sS"h
omeasi"n
=mpauitnS=tpru taSntprt tmLi

-----}

"Sepatu" dan "kue":

mi=uSrn--"htcnInthv nuho?{ 
uSrn="Shoes"
main=putStr mi
--}
anpttL{-}Wa a  o aeeog f"-}="cakes"
main=putStr anpttL
---

NB Munculnya tulisan crank"Apa yang tidak bisa saya miliki?" seharusnya tidak dilihat sebagai bermakna.

comperendinous
sumber
1
Komentar tidak diizinkan
bangga haskeller
Dan bagaimana yang kedua adalah sintaksis haskell yang valid?
haskeller bangga
kode asli memiliki blok komentar tidak tertutup karena pasangan penutup dalam komentar baris. kode "kue" bahkan tidak tampak seperti kode - bukankah itu sebuah fungsi? di mana = masuk definisi itu? bukankah itu disebut anpttLWa?
haskeller bangga
@proudhaskeller Kehilangan aturan tentang komentar. Maaf soal itu. Program pertama tidak memiliki blok komentar tertutup. Ini mem-parsing baik-baik saja. Komentar baris tidak ada artinya di dalam blok komentar. Yang kedua valid karena komentar baris valid. anpttL adalah sebuah string. Keluarkan blokir komentar dan Anda akan melihatnya sama dengan "kue". Wa ada di blok komentar, jadi, tidak, itu sebenarnya bukan anpttLWa.
comperendinous
2
@proudhaskeller Kepala saya memungkinkan GHCi melakukan pekerjaan atas namanya.
comperendinous
4

Gangguan (76 karakter)

Pertanyaan 31 karakter, 6 karakter di setiap jawaban ⟹ panjang - payload = 33

'(: (pprriinncc''fmuacghesnitaa))':(princ "What is your favorite pink hue?")

Saya ingin menggunakan "Apa warna favorit Anda?", Tetapi bahkan meluas ke ejaan Inggris, itu hanya mencapai minimum 30 karakter untuk panjang pertanyaan, dan saya membutuhkan pertanyaan panjang aneh untuk menyeimbangkan tanda kutip ganda.

Mereka mengatakan Common Lisp adalah verbose, tetapi Anda tidak akan berpikir seperti itu dengan menggunakan satu kalimat ini. Ini bahkan tidak sangat membingungkan, Anda hanya perlu memasukkan sedikit ruang kosong untuk melihat apa yang dikutip dan apa yang dieksekusi.

Banyak implementasi Lisp akan meneriakkan warna, karena mereka melengkungkan simbol ke huruf besar. Jika itu mengganggu Anda, ubah ''fmuacghesnitaake ""fmuacghesnitaa"".

Gilles 'SANGAT berhenti menjadi jahat'
sumber
Karena pertanyaan ini memiliki komponen pemungutan suara, saya membuatnya untuk menarik perhatian untuk mencoba dan mendapatkan lebih banyak suara. Tapi hadiahnya sudah habis dan karena saya tidak bisa memberikan poin pada diri saya sendiri :-) Saya akan memberikannya kepada entri Anda berdasarkan bahasa leluhur Rebmu, dan mendorong Anda untuk memeriksanya jika Anda belum pernah melakukannya! codegolf.stackexchange.com/a/36114/57
Dr. Rebmu
3

STATA 295

Pertanyaan: Apa makanan penutup terbaik untuk dipanggang saat ini? Jawaban: brownies dan cookie.

Penjelasan: Perintah dalam STATA dibatasi oleh baris baru.
Sementara "//" adalah komentar dalam STATA, "///" memberitahu kompiler untuk melanjutkan ke baris berikutnya dan memasukkan isinya ke dalam perintah saat ini.

Perintah dalam STATA sering dapat disingkat ke titik di mana mereka dianggap cukup unik untuk dapat dibedakan (sehingga "menghasilkan" menjadi "g", "global" menjadi "gl" atau "glo", "menangkap" menjadi "tutup", " tampilan "menjadi" di ", dll.). Perintah tampilan menampilkan teks ke layar. Perintah capture menangkap semua kesalahan (termasuk kesalahan sintaksis), itulah sebabnya program ini mengkompilasi dengan benar.

Saya kira jika Anda ingin pilih-pilih, tambahan "/" setelah 3 yang pertama berturut-turut diabaikan oleh kompiler. Juga, dalam program "brownies", secara teknis + "" adalah komentar. Tetapi saya mengklaim bahwa itu masih diperhitungkan karena perintah tangkap masih akan membuatnya tidak relevan bahkan jika itu bukan komentar.

Terima kasih telah membaca penjelasan saya yang sangat panjang. Sekarang untuk kode:

"Apa makanan penutup terbaik untuk dipanggang sekarang?"

g   a = "g   q   /b/a/" 
g l= "b = ""b r o w n i e s "
g   c = "g   /b/a/" 
g lpo= "d = ""c o o k i e s "
g   e = "c a p  "  /////
 +  "d i ""$ b "
g   f = "c a p  "  /////
 +  "d i ""$ d "
g   g = "c a p  "  /////
 + "c a p   / / /  "+ "/ / /"
di "What are the best desserts to bake right now?"

"brownies"

g a="    ba"
gl b="brownies"
    g /// 
 p="  "       
g e="   " //
 di "$b"
    cap ///
+" "  
g g="   " //
  cap ///   +"  "
i"htaetebs esrst aergtnw"

"kue"

    g q /// 
 ="  "        
g c="  ba"
glo d="cookies"
    cap ///
+" "  
g f="   " //
 di "$d"
    cap  ///
+ "       " ///
d Wa r h etdset obk ih o?
tanda
sumber
2

Ksh (82 karakter)

Pertanyaan 35 karakter, 5 karakter di setiap jawaban ⟹ panjang - payload = 37

ec=\'o'(;)eehc(h)oe cChroi m$e1;; '\'
echo  What\'s the  country\'s worst problem?

Saya menyalahgunakan sintaks definisi fungsi di luar POSIX. Dash dan bash tidak bisa menerimanya tetapi ksh (domain publik atau ATT) bisa.

Tidak ada yang luar biasa terjadi, hanya sedikit gema. Buang tidak, mau tidak.

Gilles 'SANGAT berhenti menjadi jahat'
sumber
2

PowerShell 88

"" > $x;{What is my favorite equipment?};"" >> ${x}

${XsXwXoXrXdX};;;${XsXhXiXeXlXdX}

Apa peralatan favorit saya? (30 karakter, H (X) = 4.0314)

"  x{hti yfvrt qimn?;"> {}
{sword};$XXXXXXX

pedang (5 karakter, H (X) = 2.32193)

">$;Wa sm aoieeupet}" >$x
$XXXXXX;;{shield}

perisai (5 karakter, H (X) = 2.58496)

Pada program lengkapnya, pengalihan string kosong ke variabel tidak ada ${x}(tanda kutip untuk string kosong digunakan untuk membentuk string omong kosong yang dialihkan ke blok kosong {}atau variabel tidak ada $xpada versi genap / ganjil), kemudian mencetak pertanyaan dan mendeklarasikan 2 variabel yang tidak digunakan (yang dicetak dan ditempatkan di sebelah variabel lain yang tidak digunakan $XXXXXXatau $XXXXXXXpada kasus yang berbeda).

DarkAjax
sumber
1

GolfScript, 51 byte

"Which are the sides of a coin? ".;""thaeialdss""

Keluaran

Which are the sides of a coin? 

Bagaimana itu bekerja

.;menduplikasi string dan menghapus salinannya. ""mendorong string kosong. thaeialdsstidak terdefinisi, jadi tidak melakukan apa-apa.

Karakter aneh

"hc r h ie faci?";"heads"

Keluaran

heads

Bagaimana itu bekerja

; menghapus string pertama dari stack.

Bahkan karakter

Wihaetesdso  on ."tails"

Keluaran

tails

Bagaimana itu bekerja

Wihaetesdsodan onadalah noops. .menduplikasi string kosong pada stack.

Dennis
sumber