Tugas Anda adalah mencetak teks Good morning, Green orb!
, dengan setiap karakter diulangi sebanyak byte yang paling sering di sumber Anda (mode). Baris baru tambahan diizinkan dan tidak perlu diulang.
Misalnya jika sumber Anda
print p
Karena p
muncul dua kali dan setiap byte lainnya muncul begitu Anda harus mencetak
GGoooodd mmoorrnniinngg,, GGrreeeenn oorrbb!!
Jawaban akan dinilai oleh produk dari jumlah byte mereka dan berapa kali output diulang. Misalnya kode di atas (jika berhasil) akan mendapat skor 7 * 2 = 14 . Tujuannya adalah untuk meminimalkan skor seseorang.
Kode Anda harus mengandung setidaknya 1 byte.
Gunakan program ini untuk memverifikasi bahwa kode dan output Anda cocok
code-challenge
kolmogorov-complexity
hello-world
self-referential
Wisaya Gandum
sumber
sumber
Jawaban:
Brain-Flak ,
384 * 106366 * 100 = 36.600Cobalah online!
Penjelasan
Hal pertama yang saya lakukan adalah mendorong tali
ke tumpukan menggunakan taktik Kolmogorov-kompleksitas otak-flak cukup standar.
Kemudian kami mendorong penghitung ke tumpukan off untuk memberi tahu kami berapa kali untuk menduplikasi setiap karakter. Namun saya tidak akan dapat menentukan apa penghitung ini sampai saya selesai menulis program.
Selanjutnya kita secara bersamaan membalikkan string dan menduplikasi setiap karakter di tempat dengan jumlah yang benar. Khususnya penghitung + 1.
Kedua bagian dari program ini memiliki mode 99 tanda kurung terbuka. Namun karena kita pasti akan membutuhkan setidaknya 1 tanda kurung. Di sinilah saya perhatikan bahwa karakter terakhir yang kami dorong dengan
!
nyaman memiliki kode karakter 33 yang berarti kami dapat menggunakannya untuk membuat 99, angka persisnya yang kami inginkan hanya menggunakan satu kurung tambahan. Ini adalah kebetulan tetapi berhasil.sumber
Haskell , 37 byte × 3 = 111
-20 Terima kasih kepada H.PWiz. -25 terima kasih kepada nimi.
Cobalah online!
Operator Haskell, FTW.
Pengingat diri untuk tidak pernah bermain golf di ponsel. Saya terus membuat kesalahan bodoh. Saya bisa mendorong setidaknya setengah kesalahan pada ponsel. : P
sumber
<*
untuk menyimpan byte (Perhatikan bahwa saya belum memeriksa validitasnya)brainfuck , 235 x 77 = 18.095 poin
Edit: -2 byte terima kasih kepada @Dennis
Cobalah online!
Tes TIO
Tunggu, ini bukan kode bowling ?? \ s
Dengan hanya 8 karakter yang dapat digunakan, brainfuck adalah salah satu bahasa terburuk untuk melakukan pertanyaan ini. Saya harus mulai dengan meminimalkan karakter mana yang mau tidak mau akan muncul paling, biasanya
+
atau-
. Setelah menulis iterasi pertama dari kode, saya merasa sangat tidak seimbang dalam mendukung+
s. Saya mengatur ulang bagian kode, seperti generasi nomor yang lebih besar, untuk menggunakan lebih banyak-
. Akhirnya, saya akhirnya disebuah sama besarnya dua karakter pada 77satu kurang-
dari+
. Tentunya mungkin untuk mengurangi ini lebih jauh, yang akan saya coba besok.Tapi hei, setidaknya saya mengalahkan jawaban Brainflak
sumber
;#
bahasa (͡ ° ͜ʖ ͡ °)Jelly , 13 byte * 1 = 13
Cobalah online!
sumber
Alice , 49 byte * 2 = 98
144Cobalah online!
Penjelasan
Ini adalah kerangka kerja biasa untuk program linier yang beroperasi sepenuhnya dalam mode Ordinal. Membuka kontrol aliran zigzag, kita mendapatkan:
Ide dasarnya adalah untuk menghindari karakter yang diulang lebih dari dua kali dengan bantuan transliterasi. Transliterasi yang akan kami lakukan adalah sebagai berikut:
Cara transliterasi bekerja di Alice adalah string
from
danto
pertama kali diulang ke LCM dari panjangnya, meskipun dalam kasus ini, semua hal adalah panjangfrom
string, jadi kita dapatkan:Dengan cara ini, kita mendapatkan empat karakter berbeda untuk mewakili huruf
o
s, dan tiga masing-masing untukn
,r
dan ruang. Kami dapat menghasilkanfrom
string menggunakan ekspansi rentang sebagai berikut:Satu-satunya masalah sekarang adalah bahwa kita akan membutuhkan empat
"
untuk keduainput
danto
string. Untuk menghindarinya, kita menempatkan keduanya menjadi satu string dan membaginya=
menjadi pemisah.Sisanya hanya:
sumber
Python 2 , 62 × 3 = 186
Cobalah online!
sumber
C (gcc) ,
74 × 6 = 444dicoret 444 masih teratur 44477 × 5 = 38581 × 4 = 324Cobalah online!
sumber
C (gcc) , 68 × 3 = 204
Terima kasih kepada @MDXF karena telah menghemat 9 poin dan membuka jalan untuk 6 poin lagi!
Cobalah online!
Versi alternatif, ASCII yang dapat dicetak, 69 × 3 = 207
Cobalah online!
sumber
APL (Dyalog Unicode) , 46 byte × 2 = 92
(Berisi unsintables)
Cobalah online!
+ Banyak byte karena halaman kode Dyalog, terima kasih kepada @ Adám karena menunjukkannya.
sumber
~⎕AV∊⍨⎕UCS 18
.Vim,
4241 penekanan tombol × 3 = 123Penjelasan:
iGod morning, Green orb!<Esc>
Tulis string
God morning, Green orb!
(satuo
hilang).2|
Lompat ke yang pertama
o
.qsyl2pl@sq
Buat makro rekursif
s
. Sebagai efek samping, lipat tiga aruso
.X0
Hapus satu
o
dan lompat ke awal.@s
Jalankan makro
s
, yang ulangi setiap karakter dua kali.sumber
C, 78 × 4 = 312
Cobalah online!
356332sumber
Japt , 24 byte * 2 = 48
Berisi yang tidak patut dicetak. Uji secara online!
Mayoritas program hanya berupa string terkompresi, yang didekompresi ke
dan
m²
kemudianm
aps masing-masing karakter dengan mengulanginya²
wice apa-apa, itu adalah sedikit peregangan . Spasi adalah satu-satunya karakter yang muncul 3 kali dalam string terkompresi; untuk menyimpan satu contoh, kami menggantinya dengan baris baru, lalu gunakan·¸
untuk membagi baris baru dan segera bergabung di spasi. Sementara 2 byte lebih lama, secara substansial mengurangi skor (66-48).Sekarang seandainya ada cara singkat untuk melakukannya tanpa menggunakan karakter dua kali ...
sumber
*salute*
Dan sekarang saya melihat jawaban Anda, saya melihatnya memiliki ² sedangkan tautannya ³ :)SNOBOL4 (CSNOBOL4) , 97 byte * 10 = 970
Cobalah online!
ya ........ SNOBOL mengharuskan operator dipisahkan oleh spasi, dan ada persyaratan spasi yang cukup canggung. Ada 9
'\t'
dan 10' '
dalam kode, sehingga setiap perbaikan akan membutuhkan perubahan pendekatan yang cukup signifikan.sumber
R ,
65 byte * 5 = 32559 byte * 5 = 29562 byte * 4 = 248Cobalah online!
Ada 4
(or,')
karakter.sumber
strrep
sebelumnya, yang seharusnya berguna.Ruby , 52 byte × 3 = 156
Cobalah online!
sumber
Perl 5 , 59 × 2 = 118 poin
Cobalah online!
Perl 5 , 51 × 3 = 153
156poinCobalah online!
Perl 5 , 43 × 4 = 172 poin
Cobalah online!
Disimpan 2 byte dalam setiap solusi berkat @Xcali (beberapa perubahan yang lalu). Untuk semua optimasi, lihat hasil edit.
sumber
-M5.010
, yang juga diperhitungkanV , 35 byte * 2 = 70
Cobalah online!
Hexdump:
sumber
SOGL V0.12 , 16 byte * 1 = 16
Coba Di Sini!
Kompresi!
Padahal, jika
Green
tidak dikapitalisasi seperti itu, ini bisa menjadi 3 byte lebih pendek: /sumber
Python 2 , 62 * 4 = 248
Terima kasih kepada @ovs dan @Giuseppe!
Cobalah online!
Python 2 , 51 * 6 = 306
Cobalah online!
Python 2 , 70 * 5 = 350
Cobalah online!
Terima kasih untuk @Mr. Xcoder untuk menyimpan byte dari kedua versi!
sumber
6
danfor
.\x6f
yang masih bagus untuk 244Ohm v2 , 20 byte * 1 = 20
Cobalah online!
Harus menyukai kompresi, meskipun sayangnya itu tidak sebagus SOGL.
sumber
Bersih , 77 byte * 3 = 231
Cobalah online!
sumber
CJam , 32 byte × 2 = 64
Cobalah online!
Dorong string, lalu XOR dengan 20 karakter pertama
[0, 1, …, 19]
, lalu duplikat setiap karakter.sumber
05AB1E , Nilai: 22 (22 byte * 1)
Cobalah online.
Penjelasan:
CATATAN 1: Bungkus tumpukan ke dalam daftar bawaan
)
digunakan sebagai ganti pasangan bawaan‚
, karena‚
sudah menjadi bagian dari kata kamusgood
.CATATAN 2: Kedua koma dalam kode
‚
dan,
mungkin terlihat sama, tetapi merupakan karakter unicode yang berbeda . Yang pertama biasanya digunakan untuk pasangan builtin , dan yang kedua untuk cetak builtin ke STDOUT dengan trailing newline . Dalam hal ini mereka digunakan untuk kata kamusgood
, dan koma yang diharapkan dalam output.Lihat tip tambang 05AB1E ini (bagian Cara menggunakan kamus? ) Untuk memahami mengapa
…‚¿•´,
ini"good morning,"
dan„ˆ¨èã
itu"green orbit"
.sumber
PowerShell , 46 byte * 4 = 184 poin
Cobalah online!
sumber
$0
PowerShell ,
49 * 558 byte * 4 = 232 poin-13 Poin berkat ASCII saja
Cobalah online!
Menggunakan pemformatan untuk beralih dari 5
o
s ke 4 untuk memecahkan beberapa angkasumber
Jelly , 31 byte × 2 = 62 poin
Cobalah online!
Penjelasan
sumber
JavaScript (ES6), 61 byte * 3 = 183
Tampilkan cuplikan kode
JavaScript (ES6), 51 byte * 4 = 204
Jawaban yang disarankan oleh @ETHproductions .
Tampilkan cuplikan kode
JavaScript (ES6), 73 byte * 4 = 292
Tampilkan cuplikan kode
JavaScript (ES6), 58 byte * 6 = 348
Tampilkan cuplikan kode
sumber
_=>_
ke'$&'
'$&$&$&$&$&$&'
penggantian, yang kemudian saya pikir memungkinkan Anda menghapus dua instance dan turun ke beberapa karakter terikat pada 4, secara drastis mengurangi skor ...Retina , 36 × 4 = 144
Cobalah online! Ada tiga baris baru dan empat
o
, jadi tidak ada lagi yang bisa dilakukan.sumber
Ruby, 55x4 = 220 poin
Saya cukup kesal karena menggunakan each_char membuat hitungan r's 5 ..
sumber
Pushy , 36 * 2 = 72
Cobalah online!
Prinsip utama dari jawaban ini adalah bahwa setiap karakter
n
disimpan sebagain + index - 29
untuk menghindari pengulangan dalam string asli. Pemetaan ini menciptakan string di backticks. Program lainnya hanya menerjemahkan ini dan mencetak setiap karakter dua kali:Bytes digunakan dua kali:
`'W
Changelog
sumber