Anda akan diberikan sebuah String yang hanya berisi huruf-huruf dari Alfabet Bahasa Inggris, baik huruf kecil dan besar (ASCII 65-90 dan 97-122). Tugas Anda adalah menampilkan versi String Fizz-Buzzified.
Bagaimana Fizz-Buzzify a String?
Setiap huruf yang memiliki indeks genap dalam alfabet bahasa Inggris (alfabet harus 1-diindeks:)
a->1,b->2,...,z->26
akan berubah menjadifizz
jika huruf kecil danFIZZ
jika huruf besar (f -> fizz, F -> FIZZ
).Setiap huruf yang memiliki indeks ganjil dalam alfabet bahasa Inggris akan berubah menjadi
buzz
jika huruf kecil, danBUZZ
jika huruf besar (e -> buzz, E -> BUZZ
).Mari kita punya contoh, untuk menggambarkan algoritma, menggunakan string
CodeGolf
(spasi ditambahkan untuk kejelasan):"C o d e G o l f" -> "BUZZ buzz fizz buzz BUZZ buzz fizz fizz" ^ ^ ^ ^ ^ ^ ^ ^ 1 1 0 1 1 1 0 0 (1 is odd index, 0 is even index)
Jika lebih nyaman untuk bahasa Anda, Anda juga dapat meninggalkan satu spasi di antara grup (
fizz, buzz, FIZZ, BUZZ
). Karenanya, hasil sepertifizzBUZZbuzzbuzz
juga dapat dikembalikan sebagaifizz BUZZ buzz buzz
. Pemisah lainnya tidak diperbolehkan.
Kasus uji:
Input -> Output "egg" -> "buzzbuzzbuzz" "CodeGolf" -> "BUZZbuzzfizzbuzzBUZZbuzzfizzfizz" "Setel Ulang" -> "FIZZbuzzbuzzbuzzfizz" "ATOM" -> "BUZZFIZZBUZZBUZZ" "yOuArEgReAt" -> "buzzBUZZbuzzBUZZfizzBUZZbuzzFIZZbuzzBUZZfizz"
Metode standar apa pun untuk I / O dapat digunakan.
Berlaku celah default .
Anda hanya diperbolehkan mengambil input dalam tipe String asli bahasa Anda. Hal yang sama berlaku untuk output.
Anda dapat mengasumsikan bahwa input tidak akan kosong.
Kode terpendek dalam byte di setiap bahasa akan menang. Good Luck dan Fizz-Buzz!
Jawaban:
Arang ,
2624 byteCobalah online! Awalnya terinspirasi oleh @CarlosAlejo. Sunting: Disimpan 2 byte dengan mengulangi huruf fiz / buzz alih-alih menetapkan sementara. Penjelasan:
sumber
Ordinal(i)
mengembalikan posisii
char dalam string aslinya, tetapi mengembalikan nilai ASCII (kode karakter). Solusi yang sangat cerdas, saya masih perlu meningkatkan banyak keterampilan Arang saya!C #, 92 byte
sumber
x%2
secara langsung sebagai boolean, tanpa perlu<1
bagian? Jika demikian, Anda mungkin dapat menyimpan beberapa byte dengan cara itu.Python 3 ,
7369 byte4 byte berkat ovs.
Cobalah online!
sumber
C (gcc) , 75 byte
Cobalah online!
sumber
Java (OpenJDK 8) ,
105100949190 byteCobalah online!
Banyak golf, sangat byte, jadi Java!
Sangat golf oleh @KevinCruijssen oleh 9 byte!
sumber
s->s.join("",s.chars().mapToObj(i->i>90?i%2<1?"fizz":"buzz":i%2<1?"FIZZ":"BUZZ").toArray(String[]::new));
Sayangnya, panjangnya 105 karakter :( Kalau saja mereka bisa menambahkanjoin
langsung di sungai atau mengintegrasikantoList
, sebenarnya, apa pun yang masuk akal akan baik.getBytes()
alih-alih menggunakantoCharArray()
adalah tambahan 3 byte lebih pendek:s->{for(int i:s.getBytes())System.out.print(i>90?i%2<1?"fizz":"buzz":i%2<1?"FIZZ":"BUZZ");}
toCharArray()
kegetBytes()
. :)JavaScript (ES6),
7977 byteUji kasus
Tampilkan cuplikan kode
sumber
C #, 97 byte
sumber
c%2>1?c>96?"fizz":"buzz":...
Jelly , 21 byte
Cobalah online!
sumber
Pyth ,
2321 byteSuite uji .
sumber
Bahasa Inggris Polos ,
820632610 byteTn. Xcoder menyarankan untuk menghilangkan jebakan kesalahan yang tidak dibutuhkan, yang menyelamatkan 22 byte.
Kode tidak dikunci:
Plain English IDE tersedia di github.com/Folds/english . IDE berjalan pada Windows. Ini mengkompilasi ke kode x86 32-bit.
sumber
If the s is "", exit.
Arang ,
4036 byteCobalah online!
Penjelasan:
Alternatif dengan jumlah byte yang sama:
Cobalah online! ( Versi Verbose )
sumber
Count
atauOrdinal
masing - masing alih-alihFind
untuk menghemat beberapa byte.if
dihitung sebagai pernyataan tunggal sehingga Anda tidak perlu{}
s. Saya juga menyimpan satu byte dengan memindahkan bagianUppercase
dalam aTernary
: Cobalah online!Fθ«A⎇﹪℅ι²buzz¦fizzχ⎇№αι↥χχ
selama 26 byte. (Deverbosifier tidak menyukai versi ini.)> <> , 68 byte
Cobalah online , atau tonton di taman bermain ikan !
(Tapi lihat jawaban Aaron yang lebih pendek 13 byte!)
Jika Anda tidak terbiasa dengan> <>, ada ikan yang berenang melalui kode dalam 2D, dan tepi membungkus. Simbol
>
,<
,^
danv
mengatur arah ikan,/
dan\
adalah cermin yang mencerminkan hal itu, dan?
berarti "melakukan instruksi berikutnya jika atas hal pada stack adalah non-nol, jika tidak melompati instruksi berikutnya".Pada baris pertama, ikan mengambil karakter input (
i
); jika -1 untuk EOF, itu berhenti (:0(?;
); ia mendapatkan charcode mod 2 (:2%$
); dan itu mendorong 1 atau 0 pada tumpukan tergantung pada apakah charcode kurang dari atau lebih besar dari charcode "^" ("^"(
). Tiga baris berikutnya mengarahkan ikan ke string fiz / buzz yang tepat, kemudian baris terakhir mencetaknya (satuo
untuk setiap karakter) dan mengirimkan ikan kembali ke awal.sumber
!
atau?
diikuti oleh spasi hanya melompati ruang, tetapi TIO menunggu sampai benda non-ruang berikutnya dilewati ...!
harus melompati spasi AFAIK, tetapi penerjemah online memberi ruang kode pada spasi, yang mungkin Anda lihat> <> , 55 byte
Berdasarkan jawaban Bukan pohon .
Alih-alih mewakili 4 kemungkinan output dalam kode, saya hanya mewakili versi kapitalisasi mereka dan menambahkan 32 ke kode karakter untuk mendapatkan setara kasus kecil.
Cobalah online!
Kode yang dimodifikasi untuk penerjemah online , yang mengisi ruang kode dengan sel kosong:
sumber
Perl5 , 50 +1 byte
Membuat daftar 128-item yang memetakan karakter ASCII ke kata kode yang tepat.
sumber
05AB1E , 22 byte
Cobalah online!
Penjelasan
Alternatif solusi 22 byte
sumber
PHP , 67 byte
Cobalah online!
sumber
F # ,
154153145 bytedisimpan
19 byte berkat @Mr. XcoderCobalah online!
sumber
concat
dan""
di baris terakhirMathematica, 134 byte
sumber
Java 8, 89 byte
Diasumsikan
import static java.util.stream.Collectors.*;
sumber
q / kdb +, 48 byte
Larutan:
Contoh:
Penjelasan:
Cukup mudah, ambil string input, masukkan ke nilai ASCII, buat daftar 1 atau 0 tergantung apakah itu ganjil atau genap (petunjuk A = 65 = aneh), kemudian gunakan daftar ini untuk mengindeks ke dalam daftar
fizz
danbuzz
. Keluarkan ini ke string, dan kemudian untuk kasus-kasus di mana inputnya <91 (lebih rendah dari Z) kami menerapkanupper
fungsi untuk mendapatkan aFIZZ
atau aBUZZ
.q diartikan dari kanan ke kiri:
sumber
mod
dan2
?mod[x;2]
olah kita tidak ingin spasi putih - tetapi yang akhirnya menjadi 1 byte lebih!Ruby , 61 + 1 = 62 byte
Menggunakan
-p
bendera.Cobalah online!
sumber
Swift 4 ,
144135 byteTidak golf:
Apa yang saya lakukan adalah mengulang setiap karakter dalam string. Saya mengonversikan masing-masing ke nilai ASCII-nya, kemudian memeriksa untuk melihat apakah itu genap atau ganjil, dan kemudian memeriksa untuk melihat apakah itu huruf besar atau kecil dan mengeluarkan nilai yang cocok dari loop. Saya kemudian bergabung dengan semua elemen dari array yang dihasilkan menjadi satu string dan mencetaknya.
Solusi ini menggunakan Swift 4, jadi belum ada cara untuk mengujinya secara online.
Terima kasih kepada @ Mr.Xcoder karena telah menyelamatkan saya 9 byte!
sumber
error: value of type 'String' has no member 'map'
, karena sebuah String tidak secara otomatis dikonversi ke daftar pada saat runtime.$0.characters.map{...}
func f(s:String){...}
, maka Anda dapat menyimpan 9 byte dengan menggunakan kode berikut, yang menggunakanprint
alih-alihreturn
: pastebin.com/06kiiGaJ . Jika tidak berhasil, beri tahu saya.R,
150123108 byteHarus lebih pendek menggunakan ASCII?Itu lebih pendek. Lihat edit riwayat untuk jawaban lama, yang digunakanletters
.Periksa setiap huruf untuk (1) apakah itu modal atau tidak (
>91
) dan apakah itu afizz
atau abuzz
.sumber
Jawa
sumber
public static void main
) atau fungsi. Saat ini, milik Anda adalah cuplikan.