Jadi, minggu lalu saya memposting tantangan untuk bermain Bebek, Bebek, Angsa . Hal ini menyebabkan sejumlah warga Minnesotan berkomentar tentang variasi 'bebek bebek' regional mereka .
Jadi, inilah aturannya:
Menggunakan daftar warna ini:
Red
Orange
Yellow
Green
Blue
Indigo
Violet
Gray
Tulis program untuk mengikuti aturan ini:
- Pilih salah satu dari warna-warna ini, dan tambahkan ke kata 'bebek' dan cetak hasilnya ke baris baru.
- Jika warnanya bukan 'Abu-abu', ulangi langkah 1.
- Jika warnanya 'Abu-abu', akhiri program Anda.
Aturan yang harus diikuti:
- Program tidak harus secara konsisten mencetak jumlah baris yang sama.
- Itu bisa dimulai dari 'Grey duck', tetapi tidak harus dilakukan secara konsisten.
- Harus ada tepat satu bebek di setiap baris dan tidak ada garis kosong yang dihasilkan.
- Harus ada setidaknya satu ruang antara warna dan bebek.
- Ruang putih sebelum dan sesudah output yang signifikan tidak masalah.
- Kasus output tidak masalah.
- Warna bisa diulang.
- Output tidak harus mengandung setiap warna setiap waktu, tetapi harus memungkinkan bahwa kode Anda akan menampilkan setiap warna.
- Tidak ada warna di luar array di atas yang dapat dimasukkan.
- Abu-abu atau abu-abu dapat diterima dalam jawaban Anda.
- Warna tidak harus konsisten dalam urutan yang sama.
- Bertujuan untuk program terpendek. Jumlah byte terkecil menang.
Contoh output:
Green duck
Orange duck
Yellow duck
Indigo duck
Yellow duck
Gray duck
Terima kasih kepada @Mike Hill karena telah mengingatkan saya pada variasi ini.
Grey
satu kali (jadi saya tidak harus memilih dari semuanya dan memeriksa apakah saya sudah memilihGrey
).Jawaban:
05AB1E ,
4240 byteDisimpan 2 byte berkat Erik the Outgolfer
Cobalah online!
sumber
ind
adalahëß
!LuaLaTeX,
220211 karakterperintah:
Bukan yang terpendek, tapi yang paling keren. Berdasarkan solusi @ skillmon
sumber
tikzducks
sana :):)
6502 kode mesin (C64), 124 byte
Secara online demo - Penggunaan:
SYS49152
.Penjelasan (dikomentari pembongkaran):
sumber
sys 49152
.Perl 5 , 79 byte
Cobalah online!
sumber
Taksi , 1995 byte
Cobalah online!
Saya pikir perlu dicatat bahwa 47% dari kode ini hanya memilih bilangan bulat acak dari 1 menjadi 8.
Juga, Taksi sangat bertele-tele sehingga jauh lebih pendek daripada kode yang sulit
duck\n
setelah setiap warna daripada menyatukannya nanti.Ini versi un-golfed:
sumber
Java (OpenJDK 9) , 133 byte
Cobalah online!
Penjelasan
sumber
Ruby ,
93 91 90 89 87 8685 byteTerima kasih kepada Dom Hastings untuk menghemat 2 byte, Kirill L. 1 byte dan Asone Tuhid 1 byte!
Cobalah online!
sumber
()
sekitar kode dan jika Anda menggunakan$.
alih-alihs
untuk menyimpan indeks, Anda dapat menghindari membuats
sama sekali (karena$.
sudah diinisialisasi ke nomor baris!) Anda harus pindahGrey
ke akhir daftar dan memeriksa sebagai$.<7
gantinya meskipun. Semoga itu bisa membantu!s=1
dan$.
sempurna!while s...
dan ruang yang dibutuhkan. Tidak melihat peluang ini setelah berubahs
menjadi$.
.Color+" duck"
menghemat 1 bytePengoperasian Bahasa skrip Flashpoint , 133 byte
Telepon dengan:
Contoh output:
Pada awalnya saya entah bagaimana salah membaca tantangan seolah-olah tujuannya adalah hanya menghasilkan jumlah baris yang bervariasi, tidak harus berakhir pada garis "Bebek abu-abu". Mengikuti interpretasi yang salah menghasilkan sepotong kode yang sedikit lebih menarik:
sumber
pdfTeX,
231220219209207 byteLuaTeX,
216206204 bytesumber
Brachylog , 68 byte
Cobalah online!
sumber
Ruby ,
8481 byteTerima kasih kepada Dom Hastings untuk -3 byte.
Cobalah online!
sumber
$_
, Anda bisa memilikiuntil/y/
di akhir untuk -3!PHP, 89 byte
Jalankan dengan
-nr
atau coba online .sumber
> <> , 107 byte
Cobalah online!
sumber
Oktaf ,
114112 byteCobalah online!
Ada banyak opsi berbeda yang semuanya antara 112 dan 118 byte ... Beberapa menginisialisasi indeks di awal dan menguranginya dengan angka acak untuk setiap loop, dan menunggu sampai 0 . Yang lain menggunakan
printf
alih-alihdisp
menghindari tanda kurung dan sebagainya.sumber
cat
danhorzcat
. Terima kasih :)PHP ,
1331251111089792 byteCobalah online!
-8 byte terima kasih kepada @Olivier Grégoire
-3 byte terima kasih kepada @manatwork
-11 byte terima kasih kepada @Dom Hastings
sumber
Grey
keX
, karena tidak digunakan. Anda akan mendapatkan 6 byte.for
kondisi 's untuk tidak perlu kurung:x!=$b=$a[array_rand($a)]
. BTW,?>
mengakhiri pernyataan, tidak perlu;
di depannya.x
sama sekali dan menggunakan$b=$a..
sebagai kondisi dan menggunakanrand(0,7)
bukanarray_rand
. Anda dapat menghapus baris baru di antara?>
danGrey duck
juga. Juga tautan TIO Anda masih memiliki tag lengkap, Anda dapat menambahkan-d short_open_tag=on
ke flag agar berfungsi! :)Utilitas Bash + GNU, 72
Cobalah online .
sumber
bash, 96 byte
Terima kasih kepada @DigitalTrauma.
sumber
>0
, namun, saya meninggalkan${#a}
bukannya8
.${#a}
bukan8
? Ini adalah kode-golf - tidak perlu memberikan generalisabilitas kode Anda untuk dimodifikasi untuk jumlah warna yang berbeda. Yang perlu Anda lakukan adalah memenuhi spesifikasi dalam jumlah terkecil byte.JavaScript, 104 byte
Cobalah online
sumber
new Date
untuk RNG di sini.AWK , 114 byte
Cobalah online!
Penjelasan
Perhatikan bahwa ini membutuhkan input "beberapa". Masukan bisa kosong. Untuk menghindari kebutuhan input, tambahkan baris pertama dengan
BEGIN
sumber
PowerShell , 94 byte
Cobalah online!
Loop sampai
$r
sama denganGrey
. Di dalam loop,-split
s string literal pada baris baru, memilihRandom
satu daripadanya, kemudian mencetak warna plusDuck
(secara teknis, itu tersisa di pipa dan pembersihan pipa pada iterasi loop berikutnya menyebabkan terjadinyaWrite-Output
). Perhatikan bahwa secara teori dimungkinkan untukGrey
tidak pernah dipilih, dan loop untuk melanjutkan tanpa batas, tetapi ini hampir tidak pernah (dalam arti probabilitas) akan terjadi.sumber
R , 101 byte
Cobalah online!
Sangat terinspirasi oleh jawaban @ user2390246 untuk tantangan terkait. Kami membutuhkan dua sumber keacakan: Mengubah urutan warna dan mengambil sampel warna bebek non-abu-abu. Ini
sample
akan mengambil sampel acak ukuran acak yang diberikan oleh distribusi eksponensial dengan parameter rate1
, dipotong ke integer. Sayangnya, menggunakan distrubtion eksponensial berarti bahwa ada kemungkinanexp(-8)
atau sekitar0.0003354
bahwa sampel akan setidaknya8
, jadi kita harus sampel denganreplace=T
.sumber
\n
dengan baris baru aktual untuk 1colors()[c(26,254,498,552,640,652)]
di tempatscan(..)
dll. harus turun menjadi sekitar 83colors()
! Itu adalah beberapa golf yang bagus, yang saya pikir Anda harus posting sebagai jawaban Anda sendiri, karena ini adalah cara yang kurang elegan untuk mendapatkan warna.Python 2 ,
138133120117116 byteCobalah online!
Jauh lebih baik dengan beberapa ide dari @EriktheOutgolfer. Terima kasih!
-3 lagi dengan terima kasih kepada @ovs
-1 dengan terima kasih kepada @Rod untuk trik baru yang keren :-)
sumber
Retina ,
6968 byteTerima kasih kepada Leo karena telah menghemat 1 byte.
Cobalah online!
Penjelasan
.
menekan output implisit pada akhir program (jika tidak, kita akan mendapatkan dua bebek abu-abu)./y/^{
membungkus seluruh program dalam satu loop yang berlanjut selama string yang bekerja tidak mengandung ay
. Sisa dari garis itu menetapkan string yang bekerja ke daftar semua warna yang dipisahkan baris-baris.Kami mengambil garis acak dari string yang bekerja (dan karena itu warna acak). Dan kami mencetak hasilnya dengan trailing
duck
dan linefeed.sumber
MATL ,
6864 byteCobalah online!
Penjelasan
sumber
Python 3,
130,128,127,126, 125 byte-1 oleh @ElPedro!
-1 by me
-1 oleh @Bubbler!
Cobalah online!
sumber
d!=c[0]
menyimpan satu byte?print(d,'duck')
untuk menyimpan byte. Pembatas default adalah spasi.Java (JDK 10) , 287 byte
Cobalah online!
Codegolf pertama saya! Jelas tidak kompetitif, hanya senang telah cukup belajar Java (saat ini di CS200) untuk dapat berpartisipasi.
sumber
Kotlin , 122 byte
Cobalah online!
sumber
MS-SQL, 158 byte
Sebagian besar didasarkan pada jawaban yang sangat baik dari Razvan , tetapi menggunakan
STRING_SPLIT
fungsi yang spesifik untuk MS-SQL 2016 dan yang lebih baru. Juga menggunakanGOTO
bukanWHILE
loop.Diformat:
sumber
T-SQL ,
195185184 bytesumber
BEGIN
.Python 2 , 98 byte
Lihat ma no import!
(Mencetak ruang ekstra antara warna dan
duck
sebagaimana diizinkan dalam pertanyaan)Cobalah online!
Generator pseudo-acak yang cukup buruk diunggulkan dengan id objek 0 (tetapi tampaknya sesuai dengan spek) yang berulang kali menghasilkan bilangan bulat
x
, pada [0,7] yang digunakan untuk mengiris daftar karakter dari indeks tersebut di langkah 8 untuk mendapatkan nama warna yang dicetak bersama denganduck
tuple, memaksa spasi di antaranya. Ketikax
menjadi nolGrey
dicetak dan evaluasi input berikutnya ke kesalahan generator nomor acak berbasis modulo mencoba untuk membaginya dengan nol (v=1/x,v
mencoba membuat tuple baru dengan elemen pertama1/x
=1/0
)Cara yang sama adalah 100 dengan Python 3
sumber