Bebek, bebek, angsa!


58

Ingat permainan anak-anak, 'Bebek, Bebek, Angsa' ? Tidak? Aku juga tidak.

Tantangan

  • Cetak kata 'bebek' pada setiap baris dalam jumlah tak tentu.
  • Cetak kata 'angsa'.
  • Program Anda berakhir.

Aturan

  • Coba mainkan game dalam byte paling sedikit.
  • Setidaknya harus ada satu bebek.
  • Pasti ada satu angsa, di akhir daftar.
  • Pasti ada satu burung di setiap baris. Tidak ada garis kosong.
  • Kasus string yang dihasilkan tidak relevan.
  • Ruang putih di dalam garis baik-baik saja.
  • Program Anda harus selesai.
  • Program Anda tidak harus secara konsisten menghasilkan jumlah itik yang sama.

Selamat bersenang-senang!


Harap dicatat: Pertanyaan ini bukan duplikat dari kode terpendek untuk menghasilkan keluaran yang tidak deterministik

Alasannya termasuk:

  • Asosiasi ke permainan anak-anak
  • Persyaratan awal dan akhir yang ditentukan dari string hasil. Tidak ada output yang ditentukan dalam tantangan lainnya.
  • Jawaban Untuk yang lain, tantangan non-duplikat berada dalam jumlah byte satu digit. Rata-rata untuk yang ini adalah sekitar 30, atau ada sekitar.
  • Dengan jumlah tumpang tindih antara tantangan ini dan yang itu, setiap pertanyaan kode-golf termasuk tag 'acak' adalah duplikat. Haruskah kita menghapus semuanya?
  • Kode jawaban untuk tantangan ini akan cocok dengan tantangan lain (dengan cara yang sangat menggelikan), tetapi jawaban untuk tantangan itu tidak cocok dengan yang ini.

11
Bisakah Anda mendefinisikan tidak pasti? Apakah ini bisa berarti nol atau satu?
rekursif

1
Silakan tentukan bagaimana ini secara acak harus dihasilkan. Seragam dalam jangkauan atau dengan penurunan eksponensial?
HyperNeutrino

@recursive Tidak, tapi mari kita pergi dengan definisi yang berfungsi ... Program ini tidak secara konsisten menampilkan jumlah bebek yang sama.
AJFaraday

2
Berbicara sebagai seorang Minnesotan, bagaimana jika milik saya mencetak "bebek, bebek, bebek abu-abu" ? :)
Mike Hill

1
@ jpmc26 Saya yakin ada yang lain. Anda harus memainkannya dengan orang lain, sebagai permulaan.
AJFaraday

Jawaban:


9

Jelly , 13 byte

2X“¢;ÆS»ẋ“ʋ¢»

Cobalah online!

Penjelasan:

2X“¢;ÆS»ẋ“ʋ¢»

2X             Random number (1 or 2)
  “¢;ÆS»       Compressed string equivalent to "duck\n"
        ẋ      Repeat the "duck\n" that random number of times
         “ʋ¢»  Compresses string equivalent to "goose"
               Implicitly concatenated and returned

Versi yang lebih mudah dibaca: Cobalah online!

Akan selalu mengembalikan 1 atau 2 bebek.


Selamat! Saya benar-benar tidak tahu bagaimana ini bekerja!
AJFaraday

@AJFaraday Saya melanjutkan dan menambahkan penjelasan untuk Anda
PunPun1000

@ PunPun1000 Maaf, tapi apa tumpukannya? Jelly adalah bahasa pemrograman diam-diam.
user202729

@ user202729 Ups, saya membuat Jelly dan 05AB1E kacau di kepala saya, bisakah Anda mengeditnya untuk memperbaiki kesalahan itu? Maaf tentang itu
PunPun1000

Ada rangkaian tersirat dalam Jelly? Yay!
MilkyWay90

43

Operasi bahasa skrip Flashpoint , 48 byte

f={s="duck\n";s+([s,""]select random 1)+"goose"}

Selalu mencetak satu atau dua bebek.

random 1mengembalikan angka (floating point) antara 0 dan 1. Angka itu dilewatkan sebagai argumen untuk selectbersama dengan array [s,""]. Angka acak kemudian dibulatkan ke bilangan bulat terdekat (0 atau 1), dan elemen array pada indeks itu dipilih dari array.

Telepon dengan:

hint call f

Keluaran:

Alternatif versi 56 byte:

f={s="duck\n";format[s+"%1goose",[s,""]select random 1]}

3
Itu selalu membuat saya senang ketika seseorang menggunakan ini di PCG.
Nit

Yah saya lupa game ini ada.
Caimen

38

World of Warcraft 81 Bytes

Inilah makro yang bisa Anda jalankan di World of Warcraft.

/run for x=1,random(1,9) do SendChatMessage("Duck") end; SendChatMessage("Goose")

11
Ya Tuhan ... Mengapa saya tidak pernah memikirkan hal ini.
Magic Octopus Urn

4
PVCG (Pemrograman Videogame dan Golf Code). Operasi Flashpoint adalah suatu hal, tetapi WoW? Saya menunggu solusi Minecraft dan Factorio ini.
Brain Guider

2
@AnderBiguri Saya menduga satu Minecraft akan melakukan sedikit lebih buruk dari 81 byte (blok?);)
Chris

5
Ini akan bekerja dan membuat Anda turun ke 58 byte:/run for x=1,random(1,9)do print("Duck")end print("Goose")
gastropner

35

Minecraft <1,13, 72 54 byte

Maaf saya harus.

Instruksi:

  • Buat dunia Minecraft baru dalam Mode Kreatif
  • Temukan folder simpan untuk dunia itu, dan tempatkan kode berikut ini data/functions/minecraft/ddg.mcfunction
  • Jalankan /function ddgdi konsol game

Bagaimana itu bekerja:

Menghasilkan kata "bebek" untuk setiap entitas di dunia, lalu mengeluarkan kata "angsa". Karena entitas terus-menerus memijah dan meremehkan, jumlah "bebek" tidak akan konsisten. Saya menggunakan tellrawbukan yang jauh lebih pendek saykarena saymenampilkan nama entitas, sedangkan tellrawoutput persis seperti yang diceritakan.

execute @e ~ ~ ~ tellraw @a "duck"
tellraw @a "goose"

Tangkapan layar

masukkan deskripsi gambar di sini

Sunting: Mengubah {"teks": "bebek"} menjadi "bebek" (dan sama dengan "angsa")


1
Cantik. Kami membutuhkan lebih banyak Minecraft di PPCG.
BradC

9
Layak disebutkan bahwa Anda (pemain) adalah entitas di dunia, sehingga jumlah bebek tidak pernah bisa 0 (bahkan jika tidak ada massa yang bermusuhan atau massa pasif).
BradC

1
@BradC harus ada seluruh tantangan yang berbasis di sekitar Minecraft.
tox123

17

JavaScript, 45 44 42 39 37 byte

Memiliki potensi untuk menghasilkan kesalahan overflow.

f=_=>`duck
${new Date%2?f():`goose`}`

Menguji

o.innerText=(
f=_=>`duck
${new Date%2?f():`goose`}`
)()
<pre id=o></pre>


14

Oktaf , 38 33 byte

Ini bukan yang terpendek (ini 36 byte), tapi ini favorit saya. Penjelasannya ada di bawah.

disp(['duck '+~(1:1/rand)';'goose'])

Cobalah online!


Beberapa variasi lebih pendek:

Ini bekerja pada prinsipnya (33 byte), tetapi waktu penerjemah online habis:

disp(['duck '+~(1:now)';'goose'])

Menambahkan beberapa byte untuk membuat output lebih pendek membuatnya 35 atau 36 byte:

disp(['duck '+~(7e5:now)';'goose'])   % Works on octave-online.net
disp(['duck '+~(7.3e5:now)';'goose']) % Works on tio.run

Penjelasan:

Saya hanya akan menjelaskan yang acak terakhir. Yang lainnya serupa, tetapi menggunakan jumlah hari sejak 1 Januari 0000 hingga hari ini.

randmengembalikan nomor acak pada interval (0, 1) . Dengan demikian, 1/randmengembalikan angka yang lebih besar dari 1 . Karena rentang 1:f, di mana ffloat acak yang lebih besar dari 1 identik dengan 1:floor(f), 1:1/randmenciptakan kisaran 1 .. x , di mana x> = 1 .

Saya akan mencoba menjelaskan ini seolah-olah Oktaf adalah bahasa berbasis stack.

      'duck '                           % Push the string 'duck ' to the stack
               (1:1/rand)               % Push a vector 1... floor(1/rand)
              ~(1:1/rand)'              % Negate the vector (making it all zeros)
                                        % and transpose it.
             +                          % Add 'duck ' with the vertical vector of zeros
                                        % to implicitly duplicate the string r times
     [                    ;'goose']     % Push the string 'goose' and concatenate
                                        % vertically with the rest
disp(                              )    % Display it all.

disp(['duck '+~pwd';'goose'])? Tidak yakin apakah ini cukup "tidak pasti"
Luis Mendo

12

Perl 5 , 20 byte

Pertama, 26 byte praktis:

Bebek 1 hingga 9 kali sebelum menjadi angsa.

say"Duck
"x(1+$^T%9),Goose

Cobalah online!

Tetapi jika Anda memiliki banyak memori dan waktu versi 20 byte ini (seperti yang disarankan oleh Chris ) juga berfungsi:

say"Duck
"x$^T,Goose

Ini juga mengasumsikan Masalah Tahun 2038 akan diselesaikan untuk Perl 5 , jika tidak maka tidak berlaku untuk 1 detik 20 tahun karenanya.


Jika Anda berubah 1+$^T%9menjadi adil $^T, itu masih berfungsi, dan Anda menghemat 4 byte.
Chris

@ Chris Anda jelas memiliki lebih banyak memori daripada saya. Namun, saya akan mengambil saran Anda karena ada komputer yang masuk akal yang akan bekerja. Terima kasih.
Ton Hospel

12

Python 2 , 36 34 byte

print"duck\n"*((id(id)%5)+1),"goose"

Cobalah secara Online!

Saran dari Kevin Cruijssen membuat kita mencapai 34 byte:

print"duck\n"*-~(id(id)%5),"goose"

3
Selamat datang di situs ini, dan jawaban pertama yang bagus!
caird coinheringaahing

Selamat datang di PPCG! Anda dapat bermain golf dua byte dengan mengubah ((id(id)%5)+1)untuk -~(id(id)%5)menyingkirkan tanda kurung. Tip untuk bermain golf di <semua bahasa> dan Tips untuk bermain golf di Python mungkin menarik untuk dibaca. Selamat menikmati!
Kevin Cruijssen

1
Tidak id(id)dapat id(0)atau aku melewatkan sesuatu?
Jonathan Frech

@ Johnathan, melihat id(0)pada beberapa komputer yang berbeda menunjukkan itu konstan.
user2699

1
Sedikit lebih intuitif dan tidak ada lagi byte yang akan dipanggil id([]). Ini harus menginisialisasi daftar yang berbeda setiap kali program berjalan, yang secara teori harus secara konsisten menghasilkan alamat memori yang berbeda.
jpmc26

11

Z Shell (+ wget & Netpbm), 168 160 150 148 145 135 120 byte

d(){wget -O- bit.ly/$1|jpegtopnm|pamscale -w 64 -h 64};d DckDkGo|pnmtile 64 $[(RANDOM&7+1)*64]|pnmcat -tb - <(d g005eGG)

Bukan solusi terpendek, tapi saya merasa ingin memberikan semacam tantangan untuk tantangan ini (terinspirasi oleh solusi @ AlexG untuk masalah lain ini ).

Script ini menghasilkan gambar PPM yang berisi antara 1-8 gambar bebek dan gambar angsa di bagian bawah pada output standar. Ini mengunduh dua gambar sumber dari Wikipedia, sehingga akses internet diperlukan agar bisa berfungsi.

Output sampel dikonversi ke JPEG melalui pnmtojpeg :

masukkan deskripsi gambar di sini


1
Ini benar-benar membuat hari saya!
AJFaraday

Saya baru menyadari bahwa Anda adalah orang yang sama yang mengusulkan tantangan lain yang saya tautkan. xD Yah, saya senang Anda menyukai ini! = D
lucasb

Yap, ada beberapa tema dalam tantangan kode golf saya :) Saya pasti harus memberikan poin bonus untuk jawaban gambar.
AJFaraday

Bukankah ini celah standar, untuk mendapatkan sumber daya eksternal?
MilkyWay90

10

R , 35 byte

cat(rep("duck
",rexp(1)+1),"goose")

Cobalah online!

rexp()menghasilkan angka acak dari fungsi peluruhan eksponensial. +1untuk memastikan setidaknya satu bebek. Semua baris setelah yang pertama menyertakan spasi terdepan (yang merupakan pemisah default untuk cat) tetapi ini diizinkan.


1
Peluang menghasilkan lebih dari satu bebek adalah exp(-1)sekitar 36,8%.
Giuseppe

Ia meminta untuk mencetaknya di setiap baris. Saya pikir Anda harus menambahkan "\ n" ke "bebek" Anda
stuart stevenson

3
@stuartstevenson Di sini saya telah menggunakan baris baru literal daripada \nkarena satu byte lebih pendek. Jika Anda mengunjungi "Coba online!" Tautan Anda dapat melihat bahwa efeknya sama.
user2390246

Pada kotak DOS / Windows, baris baru itu akan tetap dua (2) byte. 0x0d0a
menyala

10

Bash , 39 38 37 byte

sed s/[0-9]/duck\\n/g<<<$RANDOM\goose

Cobalah online!

Mencetak sejumlah bebek yang sama dengan jumlah digit dalam bilangan bulat yang terdistribusi secara merata pada [0,32767] (jadi, lebih sering daripada tidak, lima bebek (jumlah bebek yang baik)).

-1 byte masing-masing berkat @Chris dan @sch menunjukkan pasangan tanda kutip yang tidak menarik bobotnya.


1
Selamat datang di PPCG!
Steadybox

1
Anda dapat menyimpan satu byte dengan menyingkirkan tanda kutip tunggal selama Anda ganti \ndengan \\n.
Chris

1
Ide bagus. Anda dapat melakukan sesuatu yang serupa hanya dengan konstruksi bash dan tidak ada sed untuk 30 byte.
Digital Trauma

1
sed s/[0-9]/duck\\n/g<<<$RANDOM\goosedapat mengurangi satu byte
sch

1
Tidak sedsepenuhnya portabel. Pada beberapa platform Anda mungkin lolos dengan backslash tunggal \n. Pada orang lain Anda tidak akan mendapatkan baris baru apa pun yang Anda lakukan.
tripleee

9

Bash Murni (tidak ada utilitas eksternal), 25

Berdasarkan jawaban @ SophiaLechner , ini juga mencetak sejumlah bebek .

Ide @ OlivierDulac untuk menggunakan skrip shell PID yang disimpan dalam $parameter menghemat 5 byte.

echo "${$//?/duck
}"goose

Cobalah online .


1
jika kami menganggap Anda meluncurkan program, itu akan mendapatkan pid berbeda setiap saat. sering kali panjangnya 5 digit, tetapi tidak selalu. maka: ganti RANDOMke $mencukur 5 byte? Dan kita juga bisa melakukan itik yang sangat panjang:yes duck|head -n $$;echo goose
Olivier Dulac

@OlivierDulac ya, saya pikir menggunakan $$diterima - terima kasih!
Digital Trauma

sama sama! Saya memposting versi saya yang lain ( yes duck | head -n $$;echo goose) sebagai alternatif (lebih lama dari milik Anda, tetapi satu mendapat BANYAK bebek untuk 5 karakter tambahan ^^)
Olivier Dulac


8

Bash + Coreutils, 36 27 byte

yes duck|sed $$q;echo goose

Mencetak terlalu banyak bebek (antara 2 dan cat /proc/sys/kernel/pid_max), lalu satu angsa.

Disimpan sembilan byte berkat Digital Trauma dan Olivier Dulac.

Cobalah online! (tapi perlu diingat bahwa mungkin terpotong sesekali)

Panjang yang sama, tetapi tanpa echo:

yes duck|sed $${agoose'
q}'

Cobalah online!

aadalah perintah append sed, dan qberhenti. Keduanya hanya berjalan pada baris $$, yang sesuai dengan PID.


Bash memiliki modulo, meskipun itu akan meningkatkan ukuran. Cobahead -n $((1+(RANDOM % 5)))
tripleee

@ tripleee Karena ini adalah kode golf, meningkatkan ukuran output lebih disukai daripada meningkatkan ukuran kode tersebut. Dan 132767 bebek benar-benar masuk akal dibandingkan dengan miliar atau lebih yang Anda lihat di tempat lain;)
Chris

1
Tentu, hanya berharap dapat membantu jika seseorang benar-benar ingin menerapkan penelitian inovatif ini dalam praktik suatu hari. Seperti, TIO . 44 byte dengan beberapa ruang diambil.
tripleee

@OlivierDulac menyarankan untuk menggunakan $$alih-alih $RANDOMuntuk jawaban saya . Saya pikir Anda bisa menggunakan yang sama untuk menghemat 5 byte. Oh dan coba sedjuga:yes duck|sed 1$$q;echo goose
Digital Trauma

Sebenarnya yes duck|sed $$q;echo goosebaik-baik saja - Saya tidak berpikir skrip Anda akan pernah mendapatkan PID <1.
Digital Trauma

7

PowerShell , 35 30 28 byte

,"duck"*((Random)+1)
"goose"

Cobalah online! (versi modifikasi)

Menghasilkan array Get-Randomjumlah item. Mungkin butuh beberapa saat. Ini menambahkan +1untuk memastikan kami mendapatkan setidaknya satu duck. Versi yang dimodifikasi juga menyertakan -maflag ximum 5sehingga Anda dapat melihat program berfungsi seperti yang diharapkan (versi yang dimodifikasi akan mencetak 1, 2, 3, atau 4 ducks sebelum goose).

Array dan goosestring soliter dibiarkan pada pipa, dan implisit Write-Outputmemberi kita nilai yang dipisahkan baris baru secara gratis.

Anda tidak tahu betapa sulitnya bagi saya untuk tidak mengubah baris terakhir menjadi "bebek abu-abu" ...


Varian itu kedengarannya cukup menyenangkan, dan tentunya layak mendapat tantangan kode ... Saya sarankan Anda menunggu beberapa hari dan mempostingnya sebagai tantangan Anda sendiri :)
AJFaraday

1
@AdmBorkBork, Minnesotan ini bergabung dengan grup ini hanya memberi +1 pada bebek abu-abu Anda.
Milwrdfan

0..(random)|%{'duck'};'goose'tampak seperti 29, dan juga akan menghasilkan suatu tempat hingga [int] :: MaxValue (2,1 miliar) bebek sebelum angsa. (Dan 0..0mencetak bebek)
TessellatingHeckler

@ TessellatingHeckler Terima kasih, tapi saya baru saja datang dengan versi 28 byte. :)
AdmBorkBork



6

Brachylog , 24 21 byte

-3 byte terima kasih kepada Erik the Outgolfer

"duck"ẉ4ṙ0∧"goose"w∨↰

Cobalah online!

Dalam perayaan Bahasa bulan ini , posting brachylog pertama saya. Aliran kontrol dalam bahasa ini keren.

Bagaimana itu bekerja:

"duck"ẉ4ṙ0∧"goose"w∨↰
"duck"ẉ                 print duck with a new line
       4ṙ               choose a random number in the range is [0, 4]
         0              verify it equals zero
          ∧             and (short circuits)
           "goose"w     print goose without a newline
                   ∨    or (if it did not equal zero)
                    ↰   repeat the procedure

Jadi, jika saya membaca ini dengan benar, bunyinya dari kiri ke kanan, dari bawah ke atas?
AJFaraday

2
Bahasa tersebut berusaha menemukan kebenaran logis hanya dengan menggunakan baris pertama dari program. Program saya mengatakan "Validasikan baris kedua, lalu cetak angsa". Kemudian baris kedua bertuliskan "cetak bebek, kemudian validasi nomor acak 0 hingga 4 adalah 0, atau validasi baris ini lagi", jadi secara teknis kiri ke kanan hanya garis atas, maka setiap predikat yang Anda panggil dari sana
PunPun1000

Keren, sangat menarik mengetahui bagaimana bahasa baru bekerja. Memang mencapai kotak masuk saya, tetapi saya tidak yakin apakah itu karena saya mengajukan pertanyaan atau karena saya sudah berkomentar di sini.
AJFaraday

Anda dapat menggabungkan dua predikat seperti ini dan mengikat saya.
Erik the Outgolfer

6

Geometry Dash World 2.2 Editor - 4 objek

Gambar Tingkat Geometri Dash

Penjelasan:

Pemicu BG adalah pemicu acak 2.2 saat ini, sehingga memicu ID Grup 1 atau 2.

"DUCK" pertama memiliki id grup 1, yang membuatnya memiliki peluang 50% untuk dihapus atau tidak (toggle).

Tidak ada objek dengan ID Grup 2 di level ini, jadi ada kemungkinan 50% dari 2 "DUCK" ditampilkan.

Bagaimana cara mereproduksi ini:

"DUCK" pertama memiliki ID Grup 1.

masukkan deskripsi gambar di sini

Angsa dan bebek ke-2 tidak memiliki ID Grup masukkan deskripsi gambar di sini

Di dalam pemicu acak. masukkan deskripsi gambar di sini


Saya merasakan tema untuk tantangan ini
Benjamin Urquhart

@BenjaminUrquhart Apa?
MilkyWay90

Ada kiriman untuk Word of Warcraft, Minecraft, dan beberapa game lainnya juga.
Benjamin Urquhart

2
@BenjaminUrquhart Lebih baik cari lebih banyak game untuk menjawab
MilkyWay90

5

05AB1E , 15 14 byte

'Ðœ₁Ωи`.•zíΘ•»

Cobalah online!

Akan mencetak 2, 5 atau 6 bebek dan kemudian angsa.

-1 byte berkat @Emigna menggunakan 'untuk satu kata terkompresi (bebek)


1
Anda dapat menggunakannya 'Ðœkarena bebek adalah satu kata.
Emigna

1
Beats milikku:['ÐœTΩ#].•zíΘ•»
Magic Octopus Urn

@ MagicOctopusUrn Saya sangat suka pendekatan loop tak terbatas Anda. Jawaban Anda jelas lebih dalam semangat tantangan (atau apa yang seharusnya?) Karena dapat menghasilkan jumlah bebek yang tak terbatas.
Kaldo

@Kaldo masih, 15 byte kalah dari milikmu;)
Magic Octopus Mm

1
Alternatif 14-byter:'Ðœ₁Ω.D.•zíΘ•»
Magic Octopus Urn


5

Retina , 17 byte

?\\K`duck
K`goose

Cobalah online!

Cobalah online!

Mencetak 1 atau 2 bebek, dengan probabilitas yang sama.

Penjelasan

?\\K`duck

Tetapkan string yang berfungsi ke duckdan cetaklah dengan linefeed baris tambahan ( \). Kemudian ini dibungkus dalam tahap output lain, tetapi yang ini memiliki flag acak ( ?) yang diterapkan padanya, jadi ia hanya mencetak dengan probabilitas 50%.

K`goose

Ganti duckdengan goose, yang dicetak secara implisit di akhir program.

Inilah alternatif yang menyenangkan yang mencetak 1 bebek dengan probabilitas 50%, 2 bebek dengan 25%, 3 bebek dengan 12,5% ...:

\K`duck
?+\G`
K`goose

5

Vim (skrip) di Linux, 46 43 byte (4946 dengan :di awal baris)

.!date +0\%N\%s6
s/6.*/goose
s/\d/duck\r/g

Dieksekusi sebagai vim -S filenameatau disisipkan ke dalam menjalankan vimdengan :sebelum setiap baris.


2
Selamat datang di PPCG! Anda harus bisa menggunakan \dlebih [0-9]. Juga, sepertinya vim tidak memerlukan baris baru, jadi ini bisa 45 byte :)
H.PWiz

Selamat datang di PPCG!
Steadybox

5

> <> , 31 22 byte

"duck"a>x
r"esoog"<>o<

Cobalah online!

-9 byte berdasarkan revisi Bukan pohon


1
Anda dapat menghapus l?!;dan keluar dengan kesalahan.
Emigna

1
Dan Anda bisa menghemat lebih banyak seperti ini
Emigna

1
Atau seperti ini .
Bukan pohon

3
@Noatatree Saya mendapatkan yang satu untuk mencetak "\ nkcud \ nkcud ...". Jarang berperilaku dengan benar
Suppen

1
@Suppen Hanya menggunakan panah bukan cermin untuk memperbaikinya; lihat edit.
KSmarts

5

Befunge 98 , 38 30 25 bytes

"esooG"v>:#,_@
"Duck"a<?<

Cobalah online!

  • Terima kasih @JoKing karena menelanjangi trampolin yang tidak berguna
  • Beralih ke Befunge 98 untuk jalur baru yang lebih pendek - sekarang Duckcocok dalam satu string

1
Anda tidak memerlukannya #di baris kedua
Jo King

Dan "secara teknis", whitespace within a line is finesehingga Anda dapat memotong beberapa tanda kutip (bahkan jika outputnya terlihat aneh)
Jo King

@JoKing Terima kasih, lihat hasil edit saya.
Vincent

5

T-SQL , 70 44 43 byte (Banyak bebek)

while rand()<.9print'duck'print'duck
goose'

Terima kasih @ Zak Faragher!

Versi Revisi, 54 43 40 byte (1 atau 2 bebek)

Terima kasih @BradC!

if rand()<.5print'duck'print'duck
goose'


Sepertinya saya tidak bisa menjalankan ini dengan benar di SQL Fiddle , tetapi berfungsi dengan baik di LINQPad dan SSMS.

Tidak yakin apakah ini adalah batasan yang diketahui dari SQL Fiddle atau saya hanya melakukan sesuatu yang salah


Bagus. Ke 61 jika Anda mengubah selectke printdan mengganti final 'duck'select'goose'dengan 'duck(linebreak)goose'(dengan linebreak literal, tentu saja)
BradC

Sebenarnya, Anda bisa melakukannya while rand()<.5print'duck'print'duck(linebreak)goose'untuk 43.
BradC

Bagus, terima kasih @BradC. Apakah ada cara lain untuk merepresentasikan garis putus-putus dalam string selain menambahkan char (13)?
Mungkin

Yap, secara harfiah memasukkan pengembalian di dalam tanda kutip, saya akan mengedit posting Anda untuk menunjukkan kepada Anda (komentar tidak menunjukkan pengembalian).
BradC

1
Simpan 3 byte lagi: ubah yang pertama whilemenjadi if. Cetakan (secara acak) baik satu atau dua bebek, yang (saya percaya) masih memenuhi tantangan.
BradC

5

Powershell - 31 30 byte

Peringatan : Anda kemungkinan besar akan berakhir dengan banyak bebek. Randomtermasuk nilai 0 hingga Int32.MaxValuejadi, tergantung pada seberapa acak nomor Anda, ini bisa jadi banyak quacking.

1..(Random)|%{"Duck"};"Goose"

Anda tidak perlu $di depan (Random). Cobalah online!
AdmBorkBork

@ AdmBorkBork terima kasih atas tangkapannya!
SomeShinyObject



4

Dibalik

57 35 byte (perimeter seluruh bidang adalah 19x3 17x2 charachters) Berkat karhell untuk perbaikannya.

55+"kcud",,,,,#v?
  @,,,,,"goose"<

Baris kedua menempatkan bebek dan baris baru di tumpukan (mundur) dan mengeluarkannya sebagai string. Setelah 75% kemungkinan untuk kembali ke awal dan mencetak bebek lagi, 25% (ketika tanda tanya memutuskan untuk turun) untuk mencetak angsa dan berhenti.


Jika peluang 50% untuk angsa diterima, 55+"kcud",,,,,#v?(linebreak here) @,,,,,"goose"< akan memotong kode Anda menjadi 35 byte
karhell

Ah bungkus yang manis. Anda benar, terima kasih, saya akan memposting pembaruan nanti!
rael_kid
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.