Baru-baru ini, saya telah melihat orang-orang Hare Krishna dengan mantra mereka di lambang dan saya menemukan itu mungkin cukup menarik untuk kode golf.
Tantangan
Tulis mantra Hare Krishna , yaitu:
Hare Krishna Hare Krishna
Krishna Krishna Hare Hare
Hare Rama Hare Rama
Rama Rama Hare Hare
Kriteria menang
Ini adalah kode-golf , jadi kode terpendek dalam byte menang!
Aturan
- Casing harus dilestarikan.
- Teks harus berisi baris baru.
- Garis mungkin memiliki spasi tambahan.
- Trailing newline diizinkan.
- Parsing dari web atau sumber daya eksternal lainnya tidak diizinkan.
code-golf
string
kolmogorov-complexity
Dariusz Woźniak
sumber
sumber
Jawaban:
Jelly , 22 byte
Cobalah online!
Bagaimana itu bekerja
sumber
Convert 15973600 to base ["Hare", "Rama", "Krishna"]
Syukurlah Anda menjelaskan lebih lanjut, karena itu tidak masuk akal.["Hare", "Rama", "Krishna"]
lebih banyak.05AB1E , 38 byte
Dapat dipersingkat 2 byte jika mengikuti baris baru tidak apa-apa.
Cobalah online!
Penjelasan
sumber
drama share irish dna
, Benarkah? Dari mana ide itu berasal? +1 :)Python 2 , 60 byte
Cobalah online!
Ini tampaknya mengalahkan pendekatan penggantian templat seperti upaya ini .
sumber
Oktaf,
7459 byteVerifikasi output di sini .
Penjelasan:
{'Hare ','Krishna ','Rama ',10}
menciptakan array sel dengan tiga string, di mana yang keempat adalah10
(nilai ASCII untuk baris baru).{'ababdbbaadacacdccaa'-96}
adalah vektor yang mengindeks array sel di atas. Vektor ini[1 2 1 2 4 ...]
karena kita kurangi96
dari stringababd...
.Kurung kotak di sekitarnya digunakan untuk menggabungkan hasil, bukan mendapatkan
ans = Hare; and = Krishna; ans = ...
sumber
Retina , 39 byte
Cobalah online!
Sebagian besar penggantian sederhana, satu-satunya "trik" adalah pengubah
*
yang mencetak hasil substitusi dan kemudian mengembalikan string kembali ke apa yang sebelumnya.sumber
PHP, 61 Bytes
cukup penggantian dari digit sebagai kunci dalam array dengan strtr nilai
Cobalah online!
sumber
JavaScript,
7570 byteCobalah online!
sumber
3
. String template akan memiliki panjang yang sama, tetapi Anda tidak perlu menggantinya nanti. (Tidak akan menyebabkan masalah indeks array, karena/./
tidak cocok dengan karakter baris baru.)C
154 byte, 124 byte,96 byteCobalah online!
28 byte disimpan, terima kasih kepada Dennis
sumber
int
dan mendeklarasikani
secara global sehingga defaultnya adalah nol. tio.run/nexus/…main(){for(char*t="BG@ESCB;:N8F6DIBA10Hare \0Krishna \0Rama \0\n";*t^72;printf(t+*t++-48));}
Menghemat 4 byteV ,
40, 36 byteCobalah online!
Hexdump:
Penjelasan:
The
<C-n>
Perintah ini sangat berguna untuk tantangan seperti ini. :)sumber
C #, 109 byte
Cukup mudah,
Console.Write
secara implisit memformat string, dan menggunakanWrite
bukanWriteLine
hanya menghemat 4 byte, tetapi juga menghindari baris baru. Menggunakan baris Unix-style sehingga mungkin tidak bekerja dengan baik pada windows, tambahan 6 byte untuk jendela dengan mengubah\n
ke\r\n
Metode ini akan menampilkan langsung ke konsol, jika Anda lebih suka metode yang mengembalikan string:
C #, 118 byte
Atau jika Anda membutuhkan program yang sepenuhnya berdiri sendiri dan dapat dikompilasi:
C #, 135 byte
Ini harus berfungsi sebagai program yang dikompilasi asalkan Anda menetapkan
A
sebagai kelas entri.sumber
var
sejauh yang saya tahu, danvar.Format()
jelas bukan apaC, 85 byte
Saya lebih suka mantra sekuler, tetapi saya harap ini adalah salah satu dari agama-agama yang damai itu.
Lihat berhasil di sini .
Ini memadatkan implementasi yang naif sebesar 23 byte.
sumber
Python 2,
928874 byteCobalah online!
Tidak , ini tidak pintar, tidak, ini bukan yang terpendek tapi hei, saya baru dalam hal ini dan itu berhasil.
Solusi lain (
8480 byte):sumber
Perl, 67 byte
Terinspirasi oleh entri JavaScript ini .
Perl, 67 byte
sumber
(Hare,Krishna,Rama)
menyimpan dua byte dalam kode pertama Anda.Matlab
139 136105 byte (terima kasih kepada @ 2501 )Cobalah Online dalam Oktaf!
sumber
x={'Hare ','Krishna ','Rama ',10};[x{'ababdbbaadacacdccaa'-96}]
adalah 64 byte. : P (menerjemahkan pengajuan oktaf @Stewie Griffin)MySQL,
115100 byte(Terima kasih @manatwork!)
sumber
AS
.R,
758583 byteIni membuat vektor dengan
Hare
,,Krishna
dan baris baru, mengambil yang diperlukan, dan kemudian mengulanginyaKrishna
denganRama
.Diperlukan untuk memasukkan spasi pada setiap kata dan
sep=""
karena jika tidakcat()
akan memberi spasi pada awal setiap baris.sumber
print()
ataucat()
akan dibutuhkan. Itu akan membutuhkan byte lebih banyak. Saya akan memposting alternatif dengan mereka akhir pekan ini :)object 'h' not found
tio.run/nexus/…h=
denganh<-
di dalam panggilan kep
PowerShell,
735352 Bytesbenar-benar dihancurkan oleh Jeff Freeman - menggunakan baris baru yang sebenarnya daripada
\n
menyimpan byte lain, dan juga menyimpan satu lagi pada format array. (dari(1,2)
ke,1,2
)-1 terima kasih kepada TesselatingHeckler, tidak ada koma dalam notasi array.
Jawaban lama saya - Mencoba beberapa metode pengganti lain tetapi entah bagaimana akhirnya sedikit lebih lama.
ada baris baru di string.
cukup mudah, menggunakan fakta bahwa PowerShell akan memperluas variabel dalam tanda kutip ganda, dan metode yang lebih pendek untuk menetapkan variabel untuk menghemat beberapa byte.
sumber
Sed, 72
Skor termasuk +1 untuk
-r
bendera.Cobalah online .
sumber
c
hange,a
ppend ataui
nsert, bukans
ubstitute. Sunting: tidak yakin lagi; Sunting sunting: ya tidak itu tidak berhasil karena mereka tidak bekerja pada ruang pola tetapi langsung menghasilkanRuby ,
6261 byteKetika saya mengerjakan ini, akhirnya menjadi hampir identik dengan jawaban Python @ xnor, kecuali Ruby tidak memiliki spasi di antara argumen dalam
print
fungsinya, memaksa saya untuk menggunakan gabungan sebagai gantinya dan menghasilkan jawaban yang lebih panjang ...-1 byte dari @manatwork
Cobalah online!
sumber
:Hare
Simbol.Bash,
9390 bytesumber
s=
itu turun ke 79h="Hare " k="Krishna " r="Rama ";echo -e "$h$k$h$k\n$k$k$h$h\n$h$r$h$r\n$r$r$h$h"
Pyth -
4541 byteCobalah
sumber
AHK ,
10792 byteIni terasa konyol tetapi saya tidak dapat menemukan cara yang lebih pendek di AHK untuk melakukan ini:
Inilah yang saya coba pertama yaitu 107 byte dan mencoba menjadi mewah. Seperti yang ditunjukkan oleh Digital Trauma , akan lebih singkat jika hanya mengirim teks mentah.
StringSplit membuat pseudo-array dengan 1 sebagai indeks pertama. Jadi istilah pertama direferensikan dengan
s1
, yang kedua dengans2
, dll. Jika tidak, tidak ada yang mewah di sini.sumber
Send Hare Krishna ...
?Batch, 75 byte
sumber
C 96 byte
Anda hanya perlu dua bit informasi untuk mencari tahu kata mana dari doa yang diperlukan selanjutnya, jadi alih-alih menggunakan banyak memori dan menyandikannya sebagai string, Anda bisa menyandikannya sebagai integer 40 bit (mis. Di dalam sebuah int panjang ).
sumber
ksh / bash / sh, 66 byte
sumber
APL (Dyalog) , 47 byte
Membutuhkan
⎕IO←0
yang default pada banyak sistem.Cobalah online!
8×4 1 5 2
berkembang biak; [32,8,40,16](4⍴3)⊤
dikonversi ke basis 4 digit 3; matriks [[1,0,1,0], [0,0,1,1], [1,2,1,2], [2,2,1,1]]...
[
...]
indeks↓
dipecah menjadi daftar daftar∊¨
minta (ratakan masing-masing)↑
campur menjadi matriks (padding dengan spasi)sumber
Retina, 60
Port langsung dari jawaban sed saya :
Cobalah online .
sumber
Java 7,
104103 bytePenjelasan:
Coba di sini.
sumber
Batch,
117111103 byteTurun ke 103 sekarang setelah mengikuti baris baru diizinkan.
^\n\n
digunakan untuk menyisipkan baris baru di akhir tiga baris pertama dan ada spasi setelahnyaRama
.sumber
Perl,
7674 bytesumber