Ayah pendiri Rock-and-roll Chuck Berry dengan sedih meninggal hari ini.
Pertimbangkan chorus -nya yang terkenal lagu " Johnny B. Goode ":
Go, go
Go Johnny go, go
Go Johnny go, go
Go Johnny go, go
Go Johnny go, go
Johnny B. Goode
(Ada beberapa cara lain yang telah diselingi tetapi yang di atas akan berfungsi untuk tujuan tantangan.)
Tantangan
Diberikan string huruf az yang kosong dan huruf kecil, menampilkan paduan suara "Johnny B. Goode" dengan semua instance Go
atau go
diganti dengan string input, dikapitalisasi dengan cara yang sama.
Sebuah trailing newline dapat diikuti secara opsional. Tidak ada hal lain dalam paduan suara yang harus diubah.
Misalnya , jika inputnya adalah
code
output harus tepatCode, code Code Johnny code, code Code Johnny code, code Code Johnny code, code Code Johnny code, code Johnny B. Codeode
opsional diikuti oleh baris baru.
Perhatikan bahwa kapitalisasi semua kata cocok dengan paduan suara asli, dan (meskipun tidak memiliki ritme) Go
in Goode
diganti serta kata-kata individual Go
dan go
.
Kode terpendek dalam byte menang.
Uji Kasus
"input"
output
"go"
Go, go
Go Johnny go, go
Go Johnny go, go
Go Johnny go, go
Go Johnny go, go
Johnny B. Goode
"code"
Code, code
Code Johnny code, code
Code Johnny code, code
Code Johnny code, code
Code Johnny code, code
Johnny B. Codeode
"a"
A, a
A Johnny a, a
A Johnny a, a
A Johnny a, a
A Johnny a, a
Johnny B. Aode
"johnny"
Johnny, johnny
Johnny Johnny johnny, johnny
Johnny Johnny johnny, johnny
Johnny Johnny johnny, johnny
Johnny Johnny johnny, johnny
Johnny B. Johnnyode
"fantastic"
Fantastic, fantastic
Fantastic Johnny fantastic, fantastic
Fantastic Johnny fantastic, fantastic
Fantastic Johnny fantastic, fantastic
Fantastic Johnny fantastic, fantastic
Johnny B. Fantasticode
an
,c
,cath
Jawaban:
Pergi, 123 byte
Go Johnny, Go !
Cobalah online!
sumber
90
byte.VIM,
5449 penekanan tombol (menyelamatkan 1 penekanan tombol dari Kritixi Lithos )Mulailah dengan kata pada baris pada file dengan kursor pada karakter pertama, maka ini akan menggantikan semuanya dengan teks Penjelasan
Cobalah online! (Terima kasih DJMcMayhem !)
sumber
Y
bukannyayy
dan mungkin bahkanG
bukan2j
<CR>
sebagai gantinya<esc>o
hD
berfungsi sebagai penggantidiw
Pure Bash,
6976 byteCobalah online!
sumber
code
semua huruf kecil, Anda tidak mendapatkan kapitalisasi yang diperlukan.05AB1E , 37 byte
Cobalah online!
Penjelasan
sumber
Batch, 207 byte
sumber
JavaScript, 98
Menyalahgunakan serialisasi array-ke-string untuk membuat koma. Membuat array formulir:
Dan menggabungkannya ke string bentuk
", go\nJohnny B. Goode"
:sumber
JavaScript (ES6),
10410199 byteVersi sebelumnya:
Bagaimana itu bekerja:
Ini adalah fungsi anonim yang mengambil input sebagai parameter
i
Menentukan variabel
u
sebagai inputi
dengan huruf pertama dikapitalisasi (Perhatikan bahwa ini mengasumsikan input tidak kosong, yang OK)Langsung saja buat string yang akan dikembalikan dari kedua variabel tersebut.
Mengulang string
"go, \nGo Johnny go"
empat kali alih-alih"Go Johnny go, go"
menghemat menghemat satu byte.Sunting 1: Lupa bermain golf titik koma, haha !! Juga salah menghitung byte, itu aslinya 102, bukan 104. Terima kasih apsillers .
Sunting 2: Alih-alih
.repeat(4)
, dengan menempatkan string itu dalam variabelx
dan melakukanx+x+x+x
memungkinkan menyimpan dua byte.Cuplikan tes
Tampilkan cuplikan kode
sumber
V ,
41, 38 byteCobalah online!
Tantangan sempurna untuk V!
Penjelasan:
sumber
Pyth - 52 byte
Test Suite .
sumber
C,
156151 bytesumber
main()
yang benar-benar memanggil fungsi itu berfungsi ...Python 3, 88 byte
String format sederhana, dengan argumen posisi.
sumber
len("\n".__repr__()[1:-2])
adalah 2. Saya lupa__repr__()
ketika mengukur panjang program."""
tanda, bukan"
tanda.Retina , 65 byte
Hitungan byte mengasumsikan penyandian ISO 8859-1.
Cobalah online!
sumber
Jelly , 41 byte
Cobalah online!
sumber
Python, 94 byte
sumber
C #,
219211212146122 BytesMenerapkan banyak saran dari komentar dengan optimasi tambahan Ini adalah Endresult:
Cobalah online!
Penjelasan:
Output untuk testcases:
Sunting: Terima kasih kepada weston karena menyarankan menggunakan suatu fungsi
sumber
^32
. Itu lebih pendek dari yang&~32
saya gunakan. Juga, port jawaban Java 7 saya tampaknya lebih pendek:string x(string a){string x=(char)(a[0]^32)+a.Remove(0,1),n=a+"\n",c=", ",r=n+x+" Johnny "+a+c;return x+c+r+r+r+r+n+"Johnny B. "+x+"ode";}}
( 139 bytes ) Cobalah di sini.string x(string a)
->(a)=>
, -13 byte), hanya 1 byte di belakang saya;)Func<string, string>
Anda hanya bisa melakukana=>
tidak perlu untuk itu()
.MATLAB / Oktaf ,
133111 byteIni awal. Semoga bisa dikurangi lebih jauh.
Pada dasarnya ini adalah fungsi anonim yang mengambil input string dan kemudian menggunakan regex untuk membuat output yang diperlukan.
Sebuah contoh:
Anda dapat mengurutkannya Coba online! . Kode tidak bekerja dengan oktaf karena semua huruf besar menjadi${upper($0)}
, sedangkan di MATLAB ini dikonversi ke huruf besar yang sebenarnya.Mengingat input dijamin hanya menjadi
a-z
(huruf kecil), saya dapat menyimpan 22 byte dengan menggunakan pengurangan sederhana dari 32 untuk mengubah huruf pertama dalam string menjadi modal, daripada menggunakan regex denganupper()
fungsi.Hasilnya, kode itu sekarang berfungsi dengan oktaf juga, jadi Anda sekarang dapat mencobanya secara online!
sumber
Ruby,
89888679 bytePengajuan golf pertama saya:
Terima kasih banyak kepada @manatwork atas komentarnya yang luar biasa: 7 byte lebih sedikit!
sumber
?
notasi; tanda kurung di sekitar.gsub
parameter terakhir tidak diperlukan. pastebin.com/6C6np5DfNova , 105 byte
Karena Nova ( http://nova-lang.org ) adalah beta yang sangat awal (dan buggy), ada beberapa cacat jelas yang ada di sini menjaga dari menggunakan byte lebih sedikit.
Misalnya, bisa menyimpan panggilan fungsi dengan huruf besar (yang disebut 3 kali) dalam variabel lokal seperti ini:
yang akan mengambil hitungan byte ke 89 byte . Alasan ini tidak bekerja sekarang dapat disalahkan pada urutan evaluasi argumen dalam bahasa C, karena Nova dikompilasi ke C. (Urutan evaluasi argumen akan diperbaiki dalam pembaruan di masa mendatang)
Terlebih lagi, saya bisa memperkenalkan properti "title" di kelas String (dan saya akan setelah melakukan lol ini) untuk mengurangi jumlah dari panggilan fungsi kapitalisasi:
dan itu akan membebaskan 7 byte ke total baru 82 byte .
Selanjutnya (dan selanjutnya), setelah inferensi tipe variabel lambda ditambahkan, ini akan valid:
Hitungannya bisa diturunkan menjadi 72 byte .
Ngomong-ngomong, ini adalah kode golf pertama saya, jadi saya mungkin telah melewatkan lebih banyak optimasi yang bisa dibuat. Dan ini menjadi non-golf centric , bahasa tujuan umum , saya pikir itu cukup mengesankan.
Kode 105 byte pertama berfungsi di versi Nova Beta v0.3.8 saat ini yang tersedia di http://nova-lang.org
output:
Terima kasih telah mendengarkan iklan saya yang tidak tahu malu untuk bahasa tujuan umum Nova (ditemukan di http://nova-lang.org ... dapatkan sekarang !!)
sumber
Brainfuck, 352 byte
Cobalah online!
Saya selalu suka tantangan di Brainfuck jadi itu menyenangkan. Mungkin bisa bermain golf lebih banyak tetapi bermain golf Brainfuck agak panjang.
sumber
PHP, 86 Bytes
sumber
Java 8,
151147146130 bytePenjelasan:
Coba di sini.
sumber
Ditumpuk , 64 byte
Cobalah online!
sumber
C # ,
159130128 byteGolf
Tidak disatukan
Tidak terbaca dibaca
Kode lengkap
Rilis
- 2 bytes
- Bertukar(i)=>
untuki=>
, berkat komentar TheLetalCoder .-29 bytes
- Terima kasih kepada Sir Bitesalot pembaruan terakhir, yang ingat saya, saya bisa mengedit string sebelum format.159 bytes
- Solusi awal.Catatan
Judul memiliki tautan ke halaman dengan kode dan kasus uji. Tekan saja Go dan hasilnya akan dicetak di bawah kode.
sumber
()
argumen di sekitar untukFunc
hanya melakukani=>
. Anda mungkin juga dapat menggunakan string interpolasi dari C # 6 dan kehilanganstring.Format
meskipun saya belum melihat kode terlalu banyak untuk melihat caranya (harus sepele).()
, tetapi saya ragu bahwa saya dapat menggunakan string yang diinterpolasi tanpa meningkatkan ukuran kode, karena penggantian yang menyebabkan runtuhnya pengulangan.Javascript -
72106 byteEdit: Ups !! Saya tidak memperhatikan aturan kapitalisasi! Akan lebih lama setelah beberapa saatSunting 2: Harus mengikuti aturan sekarang!
Mungkin bisa bermain golf lebih banyak
Digunakan sebagai:
sumber
Excel VBA,
137121112898784 BytesFungsi jendela langsung VBE anonim yang mengambil input tipe
Variant/String
dari sel[A1]
dan keluaran dengan mencetak jendela langsung VBE-16 Bytes untuk mengonversi ke fungsi jendela Segera
-9 Bytes untuk digunakan
[PROPER(A1)]
-23 Bytes untuk menjatuhkan
For ...
loop dan menyalahgunakan?
pernyataan-2 Bytes untuk diganti
" Johnny "&[A1]&", "&[A1]
dengan[" Johnny "&A1&", "&A1]
-3 Bytes untuk menggunakan
+
lebih dari&
untuk rangkaian String dan meninggalkan string terminal tidak tertutupContoh Kasus
sumber
Debug.?s
efektifDebug.Print
? Bagaimana cara kerjanya??
,i=1To
dan&c
dicerna ke dalam istilah yang lebih verbose tetapi dapat dibaca sepertiPrint
,i = 1 To
dan& c
. Komunitas telah memutuskan bahwa versi kode terkompresi dalam bahasa dapat diterima untuk tanggapan (lihat codegolf.meta.stackexchange.com/questions/10258/… )?
, saya percaya itu adalah sisa dari versi lama Excel (4.0 dan di bawah) di mana Macro Sheets digunakan di tempat VBA melalui VBE di mana ia digunakan sebagai kata kunci untuk mencetak string yang disediakan setelah itu ke pra- file teks yang ditunjukkan. Kata?
kunci itu sendiri masih sangat berguna untuk kode golf karenaPrint
kata kunci tersebut digunakan untuk menulis string ke file teks dalam versi VBA saat ini. Catatan, saya kehabisan memori dengan satu jadi ambil dengan sebutir garam.CJam , 50 byte
Cobalah online!
Penjelasan:
sumber
Pyke , 43 byte
Cobalah online!
Buat dan cetak baris pertama kemudian sisipkan
Johnny go
sebelum koma dan duplikat itu 4 kali. Akhirnya membangun bagian terakhir.sumber
johnny
. tio.run/nexus/…Python, 258 byte
sumber
t
karena hanya dipanggil sekali.Java 6,
258242 byteBagian terpanjang darinya adalah format untuk printf. Ada masalah dengan input berbeda dari string dari
a
kez
(ya saya tahu saya tidak perlu mendukung hal lain).Tidak dikoleksi dengan komentar:
EDIT: Golf 16 byte berkat Weston
sumber
"Johnny"
selalu diikuti oleh spasi.b[0]^=32;
juga akan huruf besar tanpa perlu(char)
pemain.Mathematica, 83 byte
Fungsi anonim. Mengambil string sebagai input dan mengembalikan string sebagai output. Mungkin bisa bermain golf lebih lanjut.
sumber