Programlah kalimat favorit Anda

28

Pilih kutipan atau frasa yang panjangnya tepat 5 kata, seperti Programming puzzles and code golf!.

Tulis sebuah program yang, ketika ditambahkan sendiri sebanyak n kali, menghasilkan kata pertama n + 1 dari frasa Anda.

Misalnya, jika kode program MYPROGAnda dan frasa Anda Programming puzzles and code golf!, jalankan ...

  • MYPROG harus keluar Programming
  • MYPROGMYPROG harus keluar Programming puzzles
  • MYPROGMYPROGMYPROG harus keluar Programming puzzles and
  • MYPROGMYPROGMYPROGMYPROG harus keluar Programming puzzles and code
  • MYPROGMYPROGMYPROGMYPROGMYPROG harus keluar Programming puzzles and code golf!

Menambahkan lebih dari 4 kali tidak ditentukan, program Anda dapat melakukan apa saja.

Aturan

  • Frasa Anda haruslah tata bahasa Inggris yang bermakna secara tata bahasa. Idealnya itu harus ditulis dengan huruf kapital dan diselingi dengan benar.
  • Frasa Anda mungkin panjang tetapi entropinya, yang dihitung oleh http://www.shannonentropy.netmark.pl/ , mungkin tidak kurang dari 3,5 .
    (Tempel di frasa Anda, tekan Hitung dan cari H terakhir (X) .)
  • Frasa Anda hanya dapat berisi karakter ASCII yang dapat dicetak (hex 20 hingga 7E). Kode Anda hanya dapat berisi ASCII yang dapat dicetak dan tab serta baris baru.
  • Frasa Anda harus mengandung tepat 5 kata unik dan 4 spasi. Semua non-spasi dihitung sebagai bagian dari kata-kata. Spasi adalah kata batas. Mereka mungkin tidak memimpin atau mengikuti; harus ada satu selain semua kata terakhir.
  • Outputnya juga harus mengandung satu ruang antar kata. Output pada setiap langkah penambahan mungkin berisi spasi tambahan tetapi tidak mengarah spasi.
  • Output ke stdout. Tidak ada input.

Mencetak gol

Skor Anda adalah panjang dalam byte dari program awal yang tidak ditambahkan. (mis. MYPROGskor 6)

Karena ini adalah kode-golf, skor terendah akan menang.

Hobi Calvin
sumber
21
Nah, persyaratan entropi dan keunikan membunuh ide saya tentang "kerbau" sebagai entri.
Sparr
4
Saya akan bersenang-senang di Piet sampai "Kode Anda hanya dapat berisi ASCII yang dapat dicetak dan tab dan baris baru." :(
Sp3000
3
@ Sp3000 Anda dapat memberikan jawaban kehormatan. Saya ingin melihat solusi Piet :)
Calvin's Hobbies
Ini adalah satu-satunya situasi di mana kemurnian Haskell adalah masalahnya ...
Rhymoid
gramatikal bermakna bahasa Inggris Terlalu tidak jelas apa yang "gramatikal bermakna bahasa Inggris" karena perbedaan interpretasi gramatikal dan bermakna.
MilkyWay90

Jawaban:

6

CJam - 24

"TheguywasnotI"Lm3<]S*:L

Cobalah di http://cjam.aditsu.net/

Penjelasan:

Lmmenghapus huruf yang terkandung dalam L (awalnya "") dari "TheguywasnotI"
3<mengambil 3 huruf pertama
]mengumpulkan isi stack dalam array
S*bergabung dengan array menggunakan ruang sebagai pemisah
:Lmenetapkan string yang dihasilkan ke L (juga meninggalkannya di stack )

Versi lama (28 byte):

"He is but a dog."S/W):W=]S*

Penjelasan:

S/dipisah dengan
W):Wpenambahan spasi W (awalnya W = -1)
=dapatkan kata W'th
]mengumpulkan isi stack dalam array yang
S*bergabung dengan array menggunakan spasi sebagai pemisah

aditsu
sumber
Bahasa ini sangat menarik. Seperti yang mereka katakan, "Kamu belajar tentang bahasa baru setiap hari" ... atau sesuatu seperti itu. Kerja bagus!
Brobin
Menerima ini alih-alih jawaban singkat Dennis yang sama karena ini diposting pertama kali.
Calvin Hobi
28

Piet (jawaban kehormatan)

masukkan deskripsi gambar di sini

Ular jalannya ke bawah, kehabisan tepat melalui biru dan masuk kembali melalui hijau. Mencetak "Buah lalat seperti pisang."

Saya menggunakan PietCreator untuk membuat ini, tetapi Anda dapat mencobanya di sini . Membuat ulang program Piet sangat menyebalkan, jadi saya mulai dengan kecepatan 35x35 dan melanjutkannya, artinya saya menggunakan lebih banyak kode daripada yang saya butuhkan.

Versi ukuran sebenarnya

masukkan deskripsi gambar di sini masukkan deskripsi gambar di sini masukkan deskripsi gambar di sini masukkan deskripsi gambar di sini masukkan deskripsi gambar di sini

Sp3000
sumber
11

> <> (42)

Ikan benar-benar hewan peliharaan terbesar. Beberapa orang menyimpan bug sebagai hewan peliharaan karena kurangnya logika yang tidak bisa dipahami. Program ini melakukan yang terbaik untuk alasan dengan orang-orang seperti itu.

!v'?od gub yna nac tahW;'00p!
<<|ov!
voo <

Perhatikan bahwa ini bukan baris baru di program. Output penuh dibalik di baris pertama; frasa lengkapnya adalah "Apa yang bisa dilakukan bug?" (entropi 3.58418).

Penjelasan lengkap:

Ini adalah salah satu program yang lebih menyenangkan> <> yang saya tulis, karena ini adalah yang pertama yang menggunakan refleksi. Baris pertama adalah tempat daging program.

!vadalah no-op, karena !menyebabkan instruksi selanjutnya dilewati.

'?od gub yna nac tahW;' menyimpan frasa lengkap pada tumpukan (mundur karena setiap huruf didorong ke tumpukan dalam urutan yang ditulis, sehingga harus dibalik agar dapat dibuka dengan baik).

00pDi sinilah keajaiban yang sebenarnya mulai terjadi. Perhatikan bahwa itu tidak hanya menyimpan frasa, tetapi juga menyimpan a ;. 00pmemasukkan karakter teratas ke stack ke dalam program pada posisi (0, 0), jadi sekarang karakter pertama dari program adalah a ;.

Akhir !melompati titik koma itu, dan memindahkan kursor ke atas v, yang mengarahkan program mengalir ke bawah.

Mulai sekarang, semuanya hanya rutinitas pencetakan. Karena tidak ada baris baru, penambahan berturut-turut dari program ini cukup tambahkan dua baris terakhir, karena baris pertama adalah di sebelah kanan voo <, dan dengan demikian tidak akan pernah dieksekusi.

Pada akhirnya, kursor diarahkan keluar kiri bawah program, dan membungkus kembali ke kiri atas, di mana ;itu dimasukkan sebelumnya, mengakhiri program.

Mike Precup
sumber
Semenit yang lalu ini secara teknis tidak valid tetapi saya baru saja mengubah spesifikasi sehingga baris baru (dan tab) diizinkan dalam kode (yang merupakan apa yang saya inginkan pada awalnya).
Calvin Hobbies
Oh, salahku, benar-benar ketinggalan bahwa itu berlaku untuk sumber, bukan hanya ungkapan Saya senang itu maksudnya,> <> program sangat bergantung pada baris baru.
Mike Precup
Jika Anda ingin mengurangi ini, Anda dapat menggunakan frasa dengan 11 huruf dan tanpa karakter yang berulang, seperti "It is by a rope."frasa Anda mengulangi karakter, sehingga memiliki entropi yang lebih rendah daripada yang bisa.
isaacg
Masalahnya adalah bahwa setiap keluaran pada dasarnya harus memiliki panjang yang sama untuk mencetak dengan baik, karena> <> tidak dapat mendeteksi spasi dengan mudah. Saya belum dapat menemukan yang lebih pendek.
Mike Precup
2
@isaacg Secara pribadi saya lebih suka frase Mike;)
Calvin's Hobbies
10

Python 66

i='i'in dir()and i+1;print("Tfpcfhaialetgny"[i::5],end=" ."[i>3]);

Entropi: 3,61635

Ouput:

The fat pig can fly.

Terima kasih @JasonS dan @grc untuk tips tentang memperpendek bagian deteksi variabel.

Pembaruan: Lihat jawaban JasonS untuk trik sampul jahat yang mendorongnya hingga 55 byte. :)

Vektor
sumber
i=locals().get('i',-1)+1;is -5 bytes
Jason S
Kalahkan aku! Saya akan menggunakan i='i'in dir()and i+1. Edit: aturan berubah.
grc
Ya, itu yang lain -4
Jason S
60 byte dengan Python 2:i='i'in dir()and i+1;print"Tfpcfhaialetgny"[i::5]+" ."[i>3],
nyuszika7h
9

Python 3, 55 (bonus 67)

# 55 bytes, H(X)=3.72, Based on bitpwner's 66. "Mix dog and cat fur."
i=0;print("Mdacfionauxgdtr"[i::5],end=" ."[i>3]);i+=1;i

# 67 bytes, H(X)=4.28. "Thanks for supporting Python development."
q=b"qx!%%0077C";a,b,*q=q;print((str(credits)*2)[49:][a:b],end='');q

# 60 bytes, H(X) = 3.51. "Fix the bed old pal"
s="Fixthebedoldpal";a,b,c,*s=s;print(a+b+c,end='. '[s>[]]);s

Maksudmu membungkus?

OK, beberapa penjelasan tentang # 2 (spoiler)

  • creditsadalah python builtin yang berisi teks yang ingin saya gunakan. Ini adalah tipe khusus dengan diformat reprsehingga Anda bisa mengetikkannya di interpreter interaktif dan melihat output yang bagus, jadi saya harus melakukannya str(). Saya menghabiskan sedikit waktu mencari builtin untuk ini, dan "Terima kasih telah mendukung pengembangan Python" karena frasa terlalu bagus untuk dilewatkan.

  • Karena ada banyak teks dan saya hanya ingin 5 kata, saya ingin menyimpan posisi awal dan akhir dari masing-masing substring. Itu dalam byte di awal. bytesobjek dalam python3 bertindak seperti array bilangan bulat ketika Anda menggunakan operasi urutan pada mereka.

  • Tetapi kode hanya dapat berisi karakter yang dapat dicetak, jadi saya harus menemukan offset (49) yang akan membuat semua nilai posisi saya dicetak sebagai karakter.

  • "Terima kasih" ada di dekat bagian awal string sementara kata-kata lainnya mendekati akhir, yang berarti nilai posisi saya terlalu jauh untuk semua berada dalam kisaran yang dapat dicetak. Mulitplying string oleh 2 membuat salinan lain "Terima kasih" yang lebih dekat dengan kata-kata lain.

  • Mengambil [49:]irisan string adalah satu byte sumber yang lebih sedikit daripada menambahkan 49 ke a dan b.

  • Konstruk yang digunakan dalam ketiga jawaban adalah x=<value>;dostuff and increment;x. Trailing xtidak melakukan apa-apa sama sekali, tetapi ketika dikombinasikan dengan salinan kode selanjutnya berubah menjadi xx=<value>yang mencegah xkonter ditimpa.

  • a,b,*q=q adalah urutan normal Python 3 membongkar.

Jason S
sumber
+1. Trik jahat. :) Dapatkah saya memperbaruinya dengan jawaban saya?
Vektor
Yah, saya menggunakan perantara Anda
Jason S
Saat ini saya kagum dengan jawaban kedua Anda. Begitu banyak trik yang dimasukkan ke dalamnya.
Vektor
2
Bisakah Anda memberi tahu saya, bagaimana jawaban kedua berfungsi?
sajas
8

Python 2 (37)

Setelah Sarah menjadi presiden cabang Mensa setempat, ia menjadi fokus perhatian romantis dari pria yang mencari pasangan yang cerdas. Pada setiap kencan, Sarah akan mencoba membuat hubungan pribadi, tetapi para pria hanya akan menyelidikinya pada pertanyaan-pertanyaan filosofis yang musykil. Frustrasi bahwa tidak ada yang peduli dengan sisi emosinya, dia berseru ...

i=4;print"mniIMeosQy!t"[i::5],;i-=1;i

Keluaran:

My
My IQ
My IQ is
My IQ is not
My IQ is not me!

Entropinya H(x)=3.5persis.

Penghargaan untuk Jason S., yang jawabannya pada dasarnya saya gunakan grosir. The iitrick sampul indah.

Tidak
sumber
Bagus! Alat peraga untuk menemukan frasa yang lebih pendek dengan entropi yang tepat. Aku menyerah. Juga lupa bahwa py2 lebih mengutamakan printspasi daripada menambahkannya
Jason S
Ini sangat pendek untuk jawaban Python! Sudah selesai dilakukan dengan baik.
isaacg
Anda dapat menghapus koma yang Anda miliki di tengah-tengah program Anda untuk drop down hingga 36 karakter.
xleviator
8

C - 65

Komentar penyalahgunaan :)

char*z="Ah, \0the \0good \0ol' \0times!";
for(printf(z);*z++;);//

Karena itu, baris baru menjadi penting dan kode harus ditambahkan sebagai berikut:

char *z="Ah, \0the \0good \0ol' \0times!";
for(printf(z);*z++;);//char *z="Ah, \0the \0good \0ol' \0times!";
for(printf(z);*z++;);//...
Allbeert
sumber
Ini solusi yang bagus!
MilkyWay90
4

CJam, 24 byte

"LwOtmiaKoezs"W):W>5%]S*

Jika dijalankan lima kali, itu mencetak Liz OK untuk saya . Tanda baca tidak termasuk, maaf.

Bagaimana itu bekerja

"LwOtmiaKoezs"  " Push that string. ";
W):W            " Push W (initially -1), increment and save the result in W. ";
>               " Shift that many characters from the string. ";
5%              " Select every fifth character, starting with the first. ";
]S*             " Wrap the stack in an array and join its strings using spaces. ";
Dennis
sumber
Ide bagus, meskipun frasa ini agak lemah: p
aditsu
Saya akui itu, tapi itu harus xxx xxx x x x x xx , tanpa huruf berulang. Itulah satu-satunya kalimat yang bisa saya buat dengan setidaknya masuk akal ...
Dennis
Bagaimana dengan "Sun baik-baik saja bagiku"? Anda juga dapat mengganti "Sun" dengan kata atau nama lain.
aditsu
Itu lebih baik, terima kasih.
Dennis
3

Pyth , 32

p?kqZ4d@P"It is by a rope."dZ~Z1

Frase: "Itu dengan seutas tali."

Entropi: 3,5

Bagaimana itu bekerja:

p berarti mencetak dengan pemisah yang ditentukan.

Argumen pertama ?kqZ4d,, memberikan pemisah. ?kqZ4dberarti k if Z==4 else d. kadalah '', sementara dini ' '.

Argumen kedua, nilai yang akan dicetak, dihasilkan oleh pemisahan ( P) pada spasi ( d), dan pengindeksan ke dalam daftar itu ( @) di Z.

Akhirnya,, Zyang secara otomatis diinisialisasi ke 0, bertambah 1 ( ~Z1).

isaacg
sumber
2
Saya tidak bisa memikirkan konteks di mana fase ini secara alami cocok ^^
flawr
1
@ flawr "Di mana saya tinggal bola?" "Itu dengan seutas tali."
isaacg
3

Naskah Golf, 53

Yang ini menyenangkan.

{'1'-print}:puts;.'You; are; not; a; duck.'';'/\,=\1+

Frase: "Kamu bukan bebek." (yang sepenuhnya benar; entropi 3.5110854081804286)

Penjelasan:

Tumpukan akan mulai seperti ''pada "jalankan" pertama (karena tidak ada STDIN yang disediakan). '1's ditambahkan ke ini untuk menunjukkan berapa kali kode telah ditempelkan.

{'1'-print}:puts;             # Hacky stuff (see below)
.                             # Stack: '' ''
'You; are; not; a; duck.'';'/ # Initialize the array of words
\,                            # Get the length of the string of '1's (0)
                              # Stack: '' [words] 0
=                             # Stack: '' 'You'
\1+                           # Stack: 'You' '1'

Sekarang apa yang terjadi pada putaran kedua:

{'1'-print}:puts;             # Hacky stuff (see below)
.                             # Stack: 'You' '1' '1'
'You; are; not; a; duck.'';'/ # Initialize the array of words
\,                            # Get the length of the string of '1's (1)
                              # Stack: 'You' '1' [words] 1
=                             # Stack: 'You' '1' ' are'
\1+                           # Stack: 'You' ' are' '11'

Dan seterusnya.

"Tapi," Anda berpikir, "bagaimana Anda membuat 1 untuk tidak menghasilkan?" Ah, itu bagian yang menyenangkan. Implementasi Golfscript puts(yang dipanggil saat program berakhir) seperti ini:

{print n print}:puts;

Saya hanya mengubahnya menjadi

{'1'-print}:puts;

Sehingga 1s ditekan dari output akhir.

Gagang pintu
sumber
3

J - 42 char

Saya bisa menggunakan frasa yang lebih pendek, tetapi mengapa? Itu tidak akan menjadi favorit saya.

(#~1=6|#\)&.;: :,'You multiplied 6 by 9. '

Ini bekerja karena dualisme J monad / angka dua: setiap kata kerja dapat dipanggil sebagai monad — dengan satu argumen di sebelah kanannya — atau sebagai angka dua — dengan argumen di sebelah kiri dan yang lain di sebelah kanan.

Pertimbangkan sesi berikut dengan J REPL:

   'You multiplied 6 by 9. '
You multiplied 6 by 9.
   'You multiplied 6 by 9. ' , 'You multiplied 6 by 9. '
You multiplied 6 by 9. You multiplied 6 by 9.
   ;: 'You multiplied 6 by 9. ' , 'You multiplied 6 by 9. '   NB. break into words
+---+----------+-+--+--+---+----------+-+--+--+
|You|multiplied|6|by|9.|You|multiplied|6|by|9.|
+---+----------+-+--+--+---+----------+-+--+--+
   (#\) ;: 'You multiplied 6 by 9. ' , 'You multiplied 6 by 9. '             NB. count off
1 2 3 4 5 6 7 8 9 10
   (6 | #\) ;: 'You multiplied 6 by 9. ' , 'You multiplied 6 by 9. '         NB. mod 6
1 2 3 4 5 0 1 2 3 4
   (1 = 6 | #\) ;: 'You multiplied 6 by 9. ' , 'You multiplied 6 by 9. '
1 0 0 0 0 0 1 0 0 0
   (#~ 1 = 6 | #\) ;: 'You multiplied 6 by 9. ' , 'You multiplied 6 by 9. '  NB. select
+---+----------+
|You|multiplied|
+---+----------+
   (#~ 1 = 6 | #\)&.;: 'You multiplied 6 by 9. ' , 'You multiplied 6 by 9. ' NB. undo ;:
You multiplied

Di sana, ,diperlakukan sebagai angka dua, karena ada di antara dua argumen, dan (#~1=6|#\)&.;:merupakan satu angka karena tidak memiliki argumen kiri. Jadi, jika kita memiliki kata kerja yang bisa bertindak seperti ,ketika diad dan (#~1=6|#\)&.;:saat monadik, kita akan ditetapkan.

Seperti yang mungkin sudah Anda duga, konjungsi semacam itu ada dan sepertinya :. Monadik f :gsama dengan f, dan itu sama dengan gsaat diad. Ini menyelesaikan masalah.

Contoh, yang dapat Anda coba sendiri di tryj.tk :

   (#~1=6|#\)&.;: :,'You multiplied 6 by 9. '
You
   (#~1=6|#\)&.;: :,'You multiplied 6 by 9. '(#~1=6|#\)&.;: :,'You multiplied 6 by 9. '
You multiplied
   (#~1=6|#\)&.;: :,'You multiplied 6 by 9. '(#~1=6|#\)&.;: :,'You multiplied 6 by 9. '(#~1=6|#\)&.;: :,'You multiplied 6 by 9. '
You multiplied 6
   (#~1=6|#\)&.;: :,'You multiplied 6 by 9. '(#~1=6|#\)&.;: :,'You multiplied 6 by 9. '(#~1=6|#\)&.;: :,'You multiplied 6 by 9. '(#~1=6|#\)&.;: :,'You multiplied 6 by 9. '
You multiplied 6 by
   (#~1=6|#\)&.;: :,'You multiplied 6 by 9. '(#~1=6|#\)&.;: :,'You multiplied 6 by 9. '(#~1=6|#\)&.;: :,'You multiplied 6 by 9. '(#~1=6|#\)&.;: :,'You multiplied 6 by 9. '(#~1=6|#\)&.;: :,'You multiplied 6 by 9. '
You multiplied 6 by 9.

Dan ya, sifat kebalikannya ;:membuatnya sehingga tidak ada spasi tambahan.

Menggunakan It is by a rope.sebagai ungkapan memberikan 35 arang: (#~1=6|#\)&.;: :,'It is by a rope.'. Kami tidak membutuhkan ruang tambahan seperti yang kami lakukan untuk kalimat saya, karena ;:alasan-alasan misterius .

algoritme hiu
sumber
3

BBC Basic, 40

Termasuk satu baris baru. Akan menjadi 30 jika kata kunci dapat dianggap sebagai token bukannya ASCII.

Saya menangkap pacar saya tidur dengan tukang susu, jadi saya mencampakkannya dan saya tidur dengan saudara perempuannya untuk membalas dendam. As my ex do I!(lima "huruf" dua huruf dengan karakter unik) tidak cukup entropi, jadi saya menambahkan smile-out smiley di akhir untuk membuat entropi tepat 3,5. Lagi pula, dalam kenyataannya saya memiliki kehidupan yang cukup normal, bukan plot opera sabun yang aneh.

  READa$:PRINTa$;" ";
  DATAAs,my,ex,do,I:-P

Mengulangi program 5 kali kita dapatkan

  READa$:PRINTa$;" ";
  DATAAs,my,ex,do,I:-P
  READa$:PRINTa$;" ";
  DATAAs,my,ex,do,I:-P
  READa$:PRINTa$;" ";
  DATAAs,my,ex,do,I:-P
  READa$:PRINTa$;" ";
  DATAAs,my,ex,do,I:-P
  READa$:PRINTa$;" ";
  DATAAs,my,ex,do,I:-P

Hanya 5 READpernyataan yang dieksekusi, dan 5 item data pertama dibaca dari DATApernyataan pertama . sisa data bersifat mubazir. Keluaran:

  (once)
  As 
  (5 times)
  As my ex do I:-P 
Level River St
sumber
2

Ruby, 50

puts'The fat pig can fly.'[0..File.size($0)/12-1]#

Ini menggunakan panjangnya sendiri untuk menentukan berapa banyak kata yang akan dicetak. Pengulangannya diabaikan dengan mengakhiri karakter komentar #,. Frasa yang dipinjam dari bitpwner : sangat mudah memiliki frasa pendek dengan jumlah huruf yang sama di setiap kata.

Karena setiap kata + akhir adalah 4 karakter, rumusnya adalah, misalnya untuk program dengan panjang 56:, (File.size($0)/56)*4 - 1tetapi saya dapat membagi sebelumnya 56/4 = 14, sehingga File.size($0)/14 - 1menghemat beberapa karakter. 50bukan kelipatan 4, tetapi 12cukup dekat untuk rentang yang dibutuhkan.

Tim S.
sumber
2

Chip , 165 + 3 = 168 byte

+3 untuk bendera -w

| ,z `Z`Z  `Z
| |ZZZ>Z>ZZZ>ZZZZ
>((((((((((((((((
|)-)))-)-)))-))))g
|)d)xx-x-)xx-))x)e
||b+))-x-x))-x)xc
|`v))xa(-x(x-((^d
|*`.))d| b | b
|Z~<b( |~Zf|
>~T| | |   |

"Aku memenangkan jas merah" (3.5) (Aku sebenarnya belum memenangkan hal semacam itu) (... belum)

Perhatikan baris baru yang tertinggal, sehingga salinan gabungan muncul di bawah kode yang ada.

Cobalah online! (asli)
Cobalah online! (asli, ditambah keempat salinan)

Ini sedikit berantakan. Ternyata yang paling sulit adalah kondisi terminasi. (Iterasi pertama saya mencetak kata, diikuti oleh aliran byte nol tanpa akhir ...).

Bagaimana itu bekerja

Pertama frase:
12 karakter unik + 4 spasi = tepat 3,5 entropi.

Dan kodenya:
Setiap salinan mencetak kata pertama, kemudian memberi tahu salinan di bawah ini untuk mencetak kata berikutnya. Jika hanya ada satu contoh, tidak ada salinan kedua, jadi tidak ada apa-apa selain kata pertama yang dicetak.

Jika ada dua salinan, keduanya akan mencetak kata pertama secara bersamaan (byte ATAU bersama-sama jadi baik-baik saja), maka hanya salinan kedua yang akan mencetak kata kedua.

Jika kelima salinan ada, semua akan mencetak kata pertama, dll, dll, dan salinan kelima akan mencetak kata terakhir dengan sendirinya.

Sirkuit penghentian akan menghentikan program segera setelah semua salinan tidak secara aktif mencetak.

Phlarx
sumber
1

Ruby, 63

+1;puts"See Dick and Jane run!"[/(.*?( |!)){#$.}/]if($.+=1)==$.
histokrat
sumber
1

Perl, 37

print qw(My IQ is not me!)[$i++].' ';

Mirip dengan apa yang dimiliki, tetapi mengambil keuntungan dari qw perl untuk menyimpan beberapa karakter.

pengguna0721090601
sumber
1

Panjang pesan rebmu + 27

Apakah kita harus pergi dengan "IQ saya bukan saya!" itu akan menjadi 43. Tapi saya mendukung pesan ini:

uV?'s[S[{The}{rebellion}{against}{software}{complexity.}]]proTKsPROsp

Rebol Setara / Merah:

unless value? 's [
    s: [{The}{rebellion}{against}{software}{complexity.}]
]

print/only take s
print/only space

Rebol memiliki 3 persyaratan dasar: JIKA, BAIK, dan KECUALI. KECUALI setara dengan JIKA TIDAK tetapi bisa lebih jelas: "Selalu lakukan KECUALI berikut kondisi ini kebetulan benar."

Dalam hal ini syaratnya adalah kita menguji untuk melihat apakah simbol S telah diberi nilai dalam konteks saat ini. Kita harus menggunakan kutipan di atasnya, karena mencoba menggunakan S yang tidak dikutip dalam ekspresi bersyarat akan mengevaluasinya dan mungkin menimbulkan kesalahan. ( value?tidak mengutip parameternya secara default karena Anda mungkin ingin memiliki simbol yang Anda periksa berada dalam variabel, misalnya sym: 'skemudian if value? sym [...]akan benar-benar memeriksa apakah S didefinisikan, bukan SYM)

Hanya pasta pertama dari program yang akan menetapkan serangkaian string ke S. Pasta yang berurutan akan mengambil string dari kepala seri dan meneruskannya ke PRINT / ONLY yang akan mencetak argumennya tanpa menambahkan umpan baris.

(Catatan: CETAK / HANYA adalah cara penggantian yang disarankan untuk mengatakan PRIN, yang sedang dipertimbangkan dalam Rebol 3 dan Merah; penggantian cetak sekarang sedang diuji di Rebmu.)

Rebmu
sumber
1

AHK , 44 byte

i++
Send % SubStr("He is an OK ex",i*3-2,3)

Perhatikan baris baru di bagian akhir. Satu-satunya hal yang cerdas di sini adalah bahwa string adalah semua kata 3-huruf sehingga kita tidak perlu membagi apa pun. Sebagai gantinya, kami hanya menarik substring berdasarkan i. Output ke layar aktif seolah-olah itu diketik pada keyboard.

Toast insinyur
sumber
0

Javascript (53)

Saya mengambil teks dari aditsu karena saya tidak melakukan apa-apa dengan teks, sehingga kata-kata yang dipilih agak tidak relevan untuk solusi (kecuali untuk jumlah byte).

var i=i|0;alert("He 0is 0but 0a 0dog".split(0)[i++]);

Apakah termasuk alertdalam kasus ini? Sunting: Membaca aturan itu mungkin tidak karena saya tidak bergabung dengan string dengan spasi. Saya akan menambahkan spasi untuk membuatnya adil.

Perhatikan juga bahwa yang mahal varsebenarnya relevan dalam kasus ini.

Ingo Bürk
sumber
Adakah yang bisa menjelaskan mengapa var i|=0;TIDAK bekerja di sini ???
flawr
@ flawr Anda tidak dapat melakukan |=atau serupa dengan var. Tanpa var, Anda mendapatkan ReferenceError: i is not defined. var i=i|0meluas ke var i=undefined|0, dan undefined|0tampaknya 0.
nyuszika7h
Ini berhasil karena mengangkat. var i=i|0setara dengan var i;i=i|0. Itu sebabnya Anda tidak mendapatkan kesalahan referensi. Alasannya akan diatur ke 0 pertama kali adalah apa yang dikatakan @ nyuszika7h.
Ingo Bürk
1
Tetapi ini akan mengingatkan kata-kata secara terpisah.
haskeller bangga
0

Perl, 43 56

print substr'Mine was not Red 5!',4*$i++,4;

Saya menerima bahwa saya tidak dapat memenangkan yang ini. Upaya awal saya menjelaskan mengapa:

@a=('This',' code',' is',' too',' long.');print$a[$i++];
comperendinous
sumber
0

Lua, 77

Solusi yang cukup sederhana:

i=(i or 0)+1;io.write((i==1 and""or" ")..("Thebigfoxwasup."):sub(3*i-2,3*i))

(H (X) = 4.23)

ahuff44
sumber
0

Javascript, 138

g=this;clearTimeout(g.t);g.i|=0;i++;g.t=setTimeout(
    function(){console.log(["I'll","sleep","when","I'm","dead."].slice(0,i).join(' '))},0);

(baris tambahan baru ditambahkan hanya untuk dibaca)

Cetakan I'll sleep when I'm dead. Menggunakan timer untuk memastikan output hanya dicetak sekali

aebabis
sumber
0

Bash Murni, 51 byte

a=(All you need is Love!)
printf "${i:+ }${a[i++]}"

H (X) = 3.59447

Ini bisa diturunkan sedikit lebih banyak dengan memburu salah satu frasa yang lebih pendek, tapi saya senang tetap menggunakan kutipan paling terkenal dari Lennon dari Descartes . (Maaf @ Bagan, tetapi semua kata harus unik).

Keluaran:

$ ./phrase.sh 
All$ cat phrase.sh phrase.sh phrase.sh > phrase3.sh
$ chmod +x phrase3.sh 
$ ./phrase3.sh 
All you need$ 
$ cat phrase.sh phrase.sh phrase.sh phrase.sh phrase.sh > phrase.sh
$ chmod +x phrase5.sh 
$ ./phrase5.sh 
All you need is Love!$ 

Berhati-hati menyisipkan spasi di antara kata-kata, tetapi tidak ada spasi awal atau akhir.

Bergantung pada fakta bahwa dalam bash, variabel yang tidak terdefinisi, ketika diperluas sebagai string memiliki nilai "", tetapi ketika diperluas secara aritmetika memiliki nilai 0.

Trauma Digital
sumber
5 kata harus unik ...
trichoplax
Karena kode Anda tampaknya cukup fleksibel untuk berurusan dengan frase 5 kata, saya yakin Anda dapat memikirkan salah satu yang memiliki entropi 3,5 (terlalu banyak huruf ganda dalam yang ini ...).
trichoplax
@githubphagocyte Saya berharap Anda akan memberi saya manfaat pembulatan ;-) Oke, saya sudah memperbaikinya dengan tambahan !sekarang - tampaknya melakukan trik.
Digital Trauma
0

PHP 89 78 char

Ini sedikit bertele-tele, dan pasti tidak akan menang, tapi itu tetap menyenangkan. Inilah yang saya pikirkan

Frasa:

code golf is pretty fun

Entropi = 3,82791

Kode:

<?
$i=(isset($i)?$i+1:0);
$w=["code","golf","is","really","fun"];
echo $w[$i].";

Golf:

<?$i=(isset($i)?$i+1:0);$w=["code","golf","is","really","fun"];echo $w[$i].
Brobin
sumber
0

Python3 - 122 byte

Buka pintu ruang pod [HAL]

Saya kira saya akan mendapatkan kredit kutu buku dengan yang ini. Andai saja pertanyaan itu memungkinkan satu kata lagi ...

Apa yang program saya lakukan adalah mengambil nama file (p.py adalah basis) dan memeriksa berapa kali nama dasar diulang. Kemudian mengambil irisan dari string nkali. nmenjadi jumlah ps dalam nama file.

import sys,re
for i in range(len(re.findall(re.compile('p'),sys.argv[0]))):print('Otpbdphoaoeedyon   r    s'[i::5],end='')

~ $ python p.py
Open

~ $ python pp.py
Open the

~ $ python ppp.py
Open the pod

~ $ python pppp.py
Open the pod bay

~ $ python ppppp.py
Open the pod bay doors

Manfaat dari regex adalah bahwa program dapat dipanggil apa pun yang Anda suka dan masih akan berfungsi (asalkan Anda mengubah nama dasar dalam kode): program asli saya disebut golfed.py.

Peluruhan Beta
sumber
0

05AB1E , 21 byte (Tidak bersaing)

“€Œ‰‹€‡Øš‹É.“ª#¾è¼?ð?

Cobalah online!

Penggunaan:

This works for literally anything. 
H(x) = 4.02086

Penjelasan

“€Œ‰‹€‡Øš‹É.“ª#¾è¼?ð?
“€Œ‰‹€‡Øš‹É.“ª        # Pushes "This works for literally anything."
              #       # Split on spaces
               ¾è     # get element at index of counter_variable (default 0)
                 ¼    # Increment the counter_variable
                  ?   # Print the selected element
                   ð? # Prints a space
Datboi
sumber
Tidak melihat ini, diposting di dekat yang sama dengan “€í€Ü€…‚¿‹·“hehe
Magic Octopus Urn
0

SmileBASIC, 54 byte

DATA"Does"," anybody"," have"," a"," key?
READ W$?W$;

Saya lebih suka "Pasir bisa dimakan." tapi itu gagal dalam tes entropi. Tentu saja saya bisa memilih frasa yang lebih pendek tapi itu membosankan.

Kata READkunci membaca nilai dari DATAdan menyimpannya dalam variabel. Menggunakan READlagi akan mendapatkan item berikutnya, dan seterusnya.

12Me21
sumber