Tulis program yang menghasilkan keluaran sehingga:
- Setidaknya tiga karakter berbeda muncul.
- Jumlah kemunculan masing-masing karakter adalah kelipatan 3.
Sebagai contoh, A TEA AT TEE
adalah output yang valid karena masing-masing dari 4 karakter yang berbeda, A
, E
, T
dan (space)
, terjadi 3 kali.
Tentu saja, tantangan tentang angka 3 perlu memiliki persyaratan ketiga. Begitu:
- Program itu sendiri juga harus mengikuti dua persyaratan pertama. (Ini berarti program Anda akan memiliki setidaknya 9 byte.)
Anda harus menulis program lengkap, bukan fungsi. Pastikan untuk menunjukkan hasil program Anda dalam jawaban Anda.
Juga, untuk menjaga hal-hal menarik, Anda sangat dianjurkan:
- tidak menggunakan komentar untuk memenuhi persyaratan 3 jika Anda dapat membantu
- untuk menghasilkan output yang bukan hanya string yang diulang 3 kali
- untuk membuat output berbeda dari program itu sendiri (untuk bahasa yang dapat secara otomatis menampilkan konten dari programnya sendiri, Anda dapat berkontribusi ke wiki komunitas ini ).
Ini adalah kode-golf . Kode terpendek dalam byte menang.
code-golf
restricted-source
Darrylyeo
sumber
sumber
123123123
akan berfungsi, seperti yang saat ini ditulis.)abcabcabc
dengan garis akhir yang tertinggal?Jawaban:
Brain-Flak , Flakcats , Brain-Flueue , Brain-Flak Classic , Miniflak , dan Fλak 18 byte
Terbukti optimal!
Cobalah online!
Penjelasan
Brain-Flak, Brain-Flueue, Miniflak, dan Fλak
Ini mencetak:
(Ada baris baru yang tertinggal)
Brain-Flak Classic
Brain-Flak Classic adalah versi asli dari Brain-Flak dan memiliki beberapa perbedaan penting dari Brain-Flak modern. Dalam BFC
[...]
mencetak isinya daripada meniadakannya.Di akhir mengeksekusi isi stack (
3 3 3
) dicetak.Ini mencetak:
(Ada baris baru yang tertinggal)
Flakcats
Flakcats sangat berbeda dari 4 flak lainnya dan saya terkejut bahwa ini bekerja di Flakcats. Tiga operator di sini hampir sama dengan yang digunakan Brain-Flak.
Perbedaan utama dalam program khusus ini antara Flakcats adalah
(...)
operator yang di Flakcats setara dengan([{}]...)
di Brain-Flak. Namun ini tidak membuat perbedaan bagi kami karena mengambil nol dan dengan demikian beroperasi banyak dengan cara yang sama seperti Brain-Flak.Inilah program yang dikompilasi ke dalam Brian-Flak:
Ini mencetak:
(Ada baris baru yang tertinggal)
Bukti Optimalitas pada Brain-Flak dan Miniflak
Ini bukan bukti formal, melainkan bukti informal yang harus diperluas agar dibuat lebih ketat
Karena pembatasan bahwa program Brain-Flak harus seimbang-string dan panjang program harus kelipatan 3, setiap pengajuan yang valid harus kelipatan 6 panjangnya. Ini berarti solusi apa pun yang lebih kecil dari 18 harus panjang 12.
Karena keluaran mengikuti baris baru, ketinggian akhir tumpukan harus kelipatan tiga atau kami akan melanggar batasan pada keluaran.
Setiap pengajuan yang valid dengan panjang 12 harus memiliki 2 jenis kawat gigi (memiliki kurang akan melanggar batasan jumlah karakter yang berbeda dan lebih banyak akan berarti lebih dari 12 karakter). Karena program menghasilkan output, ia harus memiliki dorongan.
Ini membuat kita memilih set kawat gigi kita yang lain. Opsinya adalah:
<...>/<>
Ini gagal karena kita perlu menghasilkan "nilai" untuk membuat angka selain nol kita harus menyerah
()
untuk membuat nomor yang membuatnya mustahil untuk mendorong lebih dari dua kali.[...]/[]
Ini gagal karena alasan yang sama yang terakhir gagal. Kawat gigi kotak sangat buruk dalam menghasilkan nilai. The
[]
monad dapat menciptakan nilai tapi kita perlu mendorong angka pertama dan kita kemudian tidak memiliki cukup parens tersisa untuk mendorong tiga kali.{...}/{}
Yang ini menjanjikan, kita bisa membuat loop dan menggunakannya
()
untuk mendorong beberapa kali, tapi sayangnya itu tidak mungkin.Agar loop berakhir, harus ada nol pada stack di beberapa titik dan agar kita memiliki output yang benar, kita harus memiliki sesuatu selain nol pada stack di akhir program. Karena kita memiliki tidak
[]
atau<>
nol pada akhir loop harus menjadi nol implisit dari bawah tumpukan. Ini berarti loop tidak dapat menambahkan nomor baru ke tumpukan sehingga tidak berguna.Karena tidak ada pilihan brace yang dapat membuat program dengan panjang 12, tidak ada yang bisa ada.
Karena Miniflak adalah bagian dari Brain-Flak, program Miniflak yang lebih pendek juga merupakan program Brain-Flak yang lebih pendek sehingga tidak ada.
Bukti Optimalitas pada Brain-Flueue
Brain-Flueue adalah bahasa lelucon yang didasarkan pada Brain-Flak. Keduanya sangat mirip, penafsirnya identik di mana-mana kecuali dua baris. Perbedaan antara keduanya adalah, seperti namanya, Brain-Flueue menyimpan datanya dalam antrian sementara Brain-Flak menyimpan datanya di tumpukan.
Untuk memulai, kami memiliki batasan yang sama pada ukuran program yang dibuat oleh Brain-Flak, jadi kami mencari program berukuran 12. Selain itu kami akan membutuhkan
(...)
untuk membuat keluaran dan pasangan lain. yang<>
dan[]
pasangan tidak bekerja di Brain-Flueue untuk alasan yang sama mereka tidak bekerja di Brain-Flak.Sekarang kita tahu bahwa program kita harus terdiri dari karakter
((())){{{}}}
.Melalui metode yang sama yang digunakan dalam bukti sebelumnya kita dapat menunjukkan bahwa harus ada loop dalam program akhir.
Sekarang di sinilah buktinya berbeda, karena Brain-Flueue beroperasi lintas antrian daripada tumpukan, program dapat keluar dari loop dengan nilai pada antrian.
Untuk keluar dari loop kita perlu nol dalam antrian (atau antrian kosong tetapi jika antrian kosong kita mendapatkan masalah yang sama seperti Brain-Flak) ini akan berarti bahwa kita harus membuka program kami dengan
({})
membuat nol. Kami akan membutuhkan dorongan di dalam loop untuk mendorong jumlah item yang diperlukan ke antrian. Kita juga perlu menekan angka bukan nol sebelum pengulangan sehingga kita dapat memasukkan pengulangan sama sekali; ini akan dikenakan biaya minimum(())
. Kami sekarang menggunakan lebih banyak parens daripada yang kami miliki.Dengan demikian tidak ada program Brain-Flueue untuk melakukan tugas yang 12 byte, dan lebih jauh lagi ada program kami yang optimal.
Solusi optimal dalam Flakcats dan Brain-Flak Classic
Solusi berikut optimal di Flakcats dan Brain-Flak Classic.
Penjelasan
Alternatif 24 byte solusi Brain-Flak
Cobalah online!
Cobalah online!
Cobalah online!
sumber
Jelly , 9 byte
Program lengkap yang mencetak 700227072 , yaitu 888 potong dadu.
TryItOnline!
Bagaimana?
sumber
888^3
adalah700227072
? Itu sangat pintar, mungkin bahasa lain bisa menggunakan trik ini.Poliglot jawaban murni literal, 9 byte
Ini adalah pos wiki komunitas untuk mengumpulkan jawaban yang hanya literal yang dicetak bahasa yang bersangkutan secara otomatis. Karena ini adalah wiki komunitas, silakan mengeditnya untuk menambahkan lebih banyak bahasa tempat kerjanya.
Program ini bekerja di:
3
mencetak data, sisa program adalah tumpukan tumpukan yang tidak berguna)2\n2\n2\n1\n1\n1\n3\n3\n3\n
)Mengabaikan baris terakhir, ini berlaku dalam beberapa bahasa lagi:
Sebagian besar tautan menuju ke Try It Online!
sumber
2\n2\n2\n1\n1\n1\n3\n3\n3\n
pada Actually, yang sangat valid. Haruskah itu ditambahkan ke pos?echo '333111222';
(dalam PHP) tetapi berhasil.C #,
114111118102 byteJika kami tidak peduli menggunakan kata-kata yang tepat: (102 byte)
Jika kami peduli dengan kata-kata yang tepat: (120 byte)
Kiriman asli saya - tidak sensitif huruf: (113 byte)
Saya tahu komentar itu tidak benar-benar dalam semangat CG, tetapi hanya itu yang bisa saya dapatkan dalam waktu yang terbatas, saya akan melihat apakah saya dapat memperbaikinya sepanjang hari. Tentunya saya harus mendapatkan setidaknya beberapa poin bonus untuk anggukan menjadi petualang.
Sunting: Terima kasih kepada roberto06 karena menangkap surat-surat yang hilang!
sumber
V
dari komentar Anda, dan menambahkanvyt
, karenaV
hanya hadir di sana sementarav
hadir dua kali (salah ketik, saya kira),y
juga hadir dua kali, dant
hadir 5 kali. Lihat di sini . Meskipun demikian, pekerjaan luar biasa!JavaScript,
3633 byteLansiran
333111222
. Ini berfungsi karena|
mengubah kedua operan menjadi bilangan bulat 32-bit, dan nilai apa pun yang tidak terlihat seperti bilangan bulat (misalnya fungsialert
) akan dikonversi0
.0|0
adalah0
, sehingga||
operator mengembalikan operan yang tepat, atau333111222
Beberapa versi yang lebih menarik:
Keluaran
(trelalert)\"(trelalert)\"(trelalert)\"
.Solusi menggunakan
.repeat
akan sama panjangnya, terima kasih kepada yang dibagikanaert
:output yang mana
(trpp.all)\"(trpp.all)\"(trpp.all)\"
.Mengambil keuntungan dari backslash ekstra untuk menghilangkan
l
danp
hampir berfungsi:Ini output
(trax.cc)"(trax.cc)"(trax.cc)"(trax.cc)"(trax.cc)"(trax.cc)"
.sumber
CJam , 9 byte
Keluaran
012345678901234567890123456789
Cobalah online!
Penjelasan
sumber
99,99,99,
, karena mengapa tidak?brainfuck , 12 byte
Tidak ada yang mengatakan hasilnya harus pendek. Ini akan menghasilkan 3 salinan dari setiap karakter ascii kecuali 2 yang pertama.
Anda dapat membuktikan bahwa ini sesingkat mungkin. Anda perlu output karena itu Anda perlu 3 '.' harus ada output yang berbeda karena itu Anda perlu 3 [+ -] sekarang kita hingga 6. 9 karakter harus dicetak, yang berarti menambahkan 6 lagi '.' atau menambahkan loop, yang akan menambah 6 karakter.
Cobalah online!
sumber
Python 2,
3630 byteKarena trailing newline tidak diizinkan, ini mungkin sependek yang bisa didapat:
Cobalah online
Output
\"
tiga kali, diikuti oleh tiga baris baru.Program-program di bawah ini tidak menghitung trailing newline, jadi mereka tidak valid.
27 byte :
Mencetak 54 setiap karakter dalam
print
.Cobalah online
Panjang yang sama, output yang lebih pendek:
Keluaran
printprint*3*3printprint*3*3printprint*3*3
24 byte:
sumber
print"""printprint*3*3"""*3
untuk output yang jauh lebih pendek ;-)print 123;print 123;print 123;
untuk solusi naif?print~9;print~9;print~9;
Perl 6 , 15 byte
Mencetak enam karakter yang berbeda, masing-masing tiga kali:
Cobalah online!
Bagaimana itu bekerja
$_
,.$_
dimulai sebagai objek jenisAny
, yangsay
dicetak sebagai(Any)
.sumber
C, 66 Bytes
Keluaran
Versi Lama 72 Bytes
sumber
JavaScript (ES6), 30 byte
Keluaran
[object Object][object Object][object Object]
.Bekerja dengan membuat tiga objek:
dua yang pertama adalah bentuk
{ "alert" : alert }
menggunakan notasi ES6{alert}
yang ketiga adalah objek kosong yang sederhana
Kemudian digunakan
+
untuk menggabungkan mereka bersama-sama, dan ketiganya memiliki ekspresi yang identik sebagai string[object Object]
,.Tokoh
+
tidak berguna, hanya hadir untuk mengisi jumlah+
karakter, tetapi tidak berbahaya untuk output program.sumber
(ES6)
judul.PKod , 9 byte
Output: 111222333
Penjelasan:
o memiliki kode karakter ascii "111" dalam desimal. Jadi s menambahkan 111 ke variabel, lalu mencetak nomornya. "Anak" pertama membuatnya 111 dan mencetak 111. Selanjutnya membuatnya 222 dan mencetak 222, terakhir membuatnya 333 dan mencetak 333
sumber
Ruby , 12 byte
output
Cobalah online!
Untuk memenuhi kriteria "didorong" kedua, saya membutuhkan 15 karakter:
menghasilkan
Coba juga online!
sumber
Microscript II, 9 byte
Penjelasan: Membuat blok kode, tetapi tidak memintanya. Ketika eksekusi berakhir, isi register utama (yaitu blok kode ini) dicetak secara implisit.
sumber
{}
secara teknis akan menjadi quine, tapi saya tidak berpikir itu memenuhi definisi kita tentang "quine yang tepat". Namun, program"q"q
(yang saya ajukan kepada tantangan quine) melakukannya.Hexagony , 9 byte
Cobalah online!
Cetak
120120120
.x
dapat diganti olehf-m
(102-109)Penjelasan
The
xx@@
hanya pengisi untuk mematuhi aturan. Aliran utama adalah menyimpanx
ke dalam memori (dengan nilai ASCII 120) dan kemudian mencetaknya sebanyak 3 kali.sumber
C, 111 byte
(Perhatikan bagaimana jumlah byte juga tiga angka yang sama. Wow. Anda tidak dapat melakukan lebih banyak meta dari itu.)
Cetakan:
sumber
PHP , 33 byte
Memilih sesuatu yang lebih menarik daripada program 9-byte tanpa tag PHP.
Keluaran
<?;<?=;'"<?;<?=;'"<?;<?=;'"
Cobalah online!
sumber
99 , 15 byte
Itu adalah sembilan sembilan, tiga spasi, dan tiga umpan garis, outputnya adalah -1110-1110-1110 .
Cobalah online!
Bagaimana?
Dua ruang diperlakukan sebagai satu, ruang ketiga ini bisa menjadi ruang tambahan pada garis apa pun juga.
sumber
Bash + coreutils,
159 byteCobalah online!
Output sampel:
(Jika Anda mencoba ini, itu akan mencetak uid, gid, dll, 3 kali.)
Jika Anda ingin menghindari pengulangan string yang sama 3 kali (dan juga memiliki output yang sama untuk semua orang, tidak seperti jawaban pertama saya), yang terbaik yang saya temukan untuk utilitas bash + Unix adalah sepanjang 15 byte:
Coba versi kedua ini secara daring!
Keluaran:
(Tidak ada baris baru dalam program, 12 baris baru dalam output.)
Penjelasan program dc dalam jawaban ini:
sumber
LOLCODE ,
273240 (360286) bytePerhatikan baris baru yang tertinggal dan coba online . Baris kedua kurang lebih sewenang-wenang dan mungkin bisa diganti dengan perintah yang lebih pendek, tapi saya baru belajar LOLCODE untuk puzzle ini. Karena nomor versi diperlukan di baris pertama, saya menggunakan angka-angka untuk menambahkan loop dengan panjang 1, 2 dan 0 mod 3 untuk memastikan jumlah karakter yang tepat akan dicetak. Dari sini saya cukup menghitung setiap karakter (dengan alat ini ). Jika muncul 0 mod 3 kali, tidak ada tindakan yang diperlukan. Jika muncul 1 mod 3 kali, itu ditambahkan ke loop 1 dan 2 sehingga akan muncul tiga kali dalam output. Jika muncul 2 mod 3 kali, karakter ditambahkan ke 12-loop. EDIT: Dengan mengganti yang pertama
VISIBLE
dengan tugas (masih tidak berguna tetapi harus memiliki 12 bukannya 11 baris baru), saya dapat memotong 33 byte.Output (60 byte):
Perhatikan baris baru yang tertinggal.
Yang menyenangkan tentang solusi ini dibandingkan dengan jawaban lain adalah bahwa Output dapat dengan mudah dimanipulasi untuk menghasilkan teks yang agak bermakna. Contoh (286 bytes dengan trailing baris baru):
Cobalah online. Output (222 byte dengan mengikuti baris baru):
Sedihnya, saya tidak sebagus anagram seperti yang saya kira: ')
sumber
KULIT
untuk bercanda :) ( 9 Bytes )
atau lebih serius ( 24 Bytes )
Hasil:
sumber
PHP, 24 byte
sumber
<?
bersama denganecho
pernyataan langsung<?=
ke output 123 3 kali.<= ?>
karakter tidak muncul kelipatan 3 kali.Batch,
3621 byteKeluaran
Sunting: Disimpan 15 byte berkat @ P.Ktinos.
sumber
Japt, 9 byte
Cetakan
undefinedundefinedundefined
. Uji secara online!Penjelasan
Kode ini diubah menjadi JavaScript berikut:
O.o
adalah fungsi yang menampilkan sesuatu tanpa baris baru. Ketika tidak diberi argumen, ia mencetakundefined
, yang dapat dianggap sebagai bug, tetapi berguna di sini. Ini juga kembaliundefined
, sehingga ketiga panggilan dicetakundefined
.Saya yakin ada banyak cara lain untuk melakukan ini ...
sumber
05AB1E , 9 byte (saya kira Anda bisa mengatakan ini adalah bagian dari PI)
-0 byte terima kasih kepada Emigna / ETHProductions, membuat solusinya lebih benar.
Versi alternatif:
[g-Q]
- Dapat menempatkan huruf aQ di sini, selama semuanya cocok (lihat di bawah).Cobalah online!
Dijelaskan:
PI,PI,PI,SORT,JOIN,SORT,JOIN,SORT,JOIN.
Hasil:
...111111222333333333444555555555666777888999999999
Alasannya hanya 9 byte adalah karena Anda tidak perlu jenis, saya hanya memasukkannya untuk membantu menggambarkan.
Hasil tanpa
{
kode:3.1415926535897933.1415926535897933.141592653589793
Terjemahan Alternatif:
Perintah-perintah berikut dapat digunakan sebagai ganti PI:
sumber
žv
,,žw
ataužx
valid karena mereka masing-masing hanya memiliki 2 digit berbeda.at least 3
, hanya PI pada awalnya ketika saya menulisnya. Apa maksud Anda kelas karakter mundur?JJJ
dengan???
sekalipun.Cubix , 12 byte
Benar-benar jawaban yang membosankan. Output tiga
10
s diikuti oleh baris baruCobalah online! Peta ke kubus
N
Menekan 10 ke tumpukanOo
x3 Output 10 dan baris baru@
menghentikan programInisial
N@N@
tidak terkena.sumber
N@N@NOoOoOo@
dan tidak termasuk spasi.Pepe , 24 byte
Cobalah online!
Program berisi 6 r, 6 e, dan 12 E's.
Penjelasan:
Keluaran:
sumber
V , 9 byte
Cobalah online!
Output
12i
24 kali:Vim, 12 byte
Keluaran sama dengan jawaban V
sumber
ditumpuk , 24 byte
Cobalah online! Output
54
masing-masingp
u
dant
.sumber
Menembus 93 , 9 byte
TIO
Cetakan
0 0 0
(Trailing space, diikuti oleh 3 null byte)Karena tumpukan Befunge diisi dengan
0
s, kita dapat mencetak karakter ASCII dengan nilai itu, dan integer itu sendiri. Karena Befunge secara otomatis mencetak spasi setelah integer, kita dibiarkan dengan 3 karakter berbeda..
mencetak0
(spasi tambahan),,
mencetak byte nol, dan@
mengakhiri programsumber