Hari ini adalah hari pendaftaran ujian AP di sekolah saya, dan sementara saya dengan teliti menggelegak di halaman dan halaman informasi yang diperlukan, ide untuk tantangan ini memukul saya. Jadi, mengingat serangkaian huruf dan angka, menampilkan bagan gelembung yang diisi dengan tepat.
Aturan:
- Untuk setiap karakter dalam string input, ganti karakter itu di kolom yang sesuai dengan
#
atau@
atau simbol masuk akal lainnya (jika bahasa Anda dapat mengatasinya, karakter Unicode 'full_block': █ terlihat sangat bagus) - Ruang diwakili oleh kolom kosong (lihat contoh)
- Input yang valid akan berupa string yang hanya terdiri dari huruf besar, angka numerik, dan spasi.
- Input akan panjang dengan minimal 1, dan maksimal 32 karakter.
- Keluaran harus UPPERCASE
- Jika panjang input kurang dari panjang maksimum 32, program Anda masih harus menampilkan kolom kosong yang tersisa
- Program Anda tidak harus menangani input huruf kecil sama seperti jika huruf besar, tetapi poin bonus jika bisa.
Format Papan:
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ
RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR
SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT
UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU
VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
00000000000000000000000000000000
11111111111111111111111111111111
22222222222222222222222222222222
33333333333333333333333333333333
44444444444444444444444444444444
55555555555555555555555555555555
66666666666666666666666666666666
77777777777777777777777777777777
88888888888888888888888888888888
99999999999999999999999999999999
Contoh:
CODE GOLF ->
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
█CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
DD█DDDDDDDDDDDDDDDDDDDDDDDDDDDDD
EEE█EEEEEEEEEEEEEEEEEEEEEEEEEEEE
FFFFFFFF█FFFFFFFFFFFFFFFFFFFFFFF
GGGGG█GGGGGGGGGGGGGGGGGGGGGGGGGG
HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
LLLLLLL█LLLLLLLLLLLLLLLLLLLLLLLL
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
O█OOOO█OOOOOOOOOOOOOOOOOOOOOOOOO
PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ
RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR
SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT
UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU
VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
00000000000000000000000000000000
11111111111111111111111111111111
22222222222222222222222222222222
33333333333333333333333333333333
44444444444444444444444444444444
55555555555555555555555555555555
66666666666666666666666666666666
77777777777777777777777777777777
88888888888888888888888888888888
99999999999999999999999999999999
ABCDEFGHIJKLMNOPQRSTUVWXYZ012345 ->
@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
B@BBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
CC@CCCCCCCCCCCCCCCCCCCCCCCCCCCCC
DDD@DDDDDDDDDDDDDDDDDDDDDDDDDDDD
EEEE@EEEEEEEEEEEEEEEEEEEEEEEEEEE
FFFFF@FFFFFFFFFFFFFFFFFFFFFFFFFF
GGGGGG@GGGGGGGGGGGGGGGGGGGGGGGGG
HHHHHHH@HHHHHHHHHHHHHHHHHHHHHHHH
IIIIIIII@IIIIIIIIIIIIIIIIIIIIIII
JJJJJJJJJ@JJJJJJJJJJJJJJJJJJJJJJ
KKKKKKKKKK@KKKKKKKKKKKKKKKKKKKKK
LLLLLLLLLLL@LLLLLLLLLLLLLLLLLLLL
MMMMMMMMMMMM@MMMMMMMMMMMMMMMMMMM
NNNNNNNNNNNNN@NNNNNNNNNNNNNNNNNN
OOOOOOOOOOOOOO@OOOOOOOOOOOOOOOOO
PPPPPPPPPPPPPPP@PPPPPPPPPPPPPPPP
QQQQQQQQQQQQQQQQ@QQQQQQQQQQQQQQQ
RRRRRRRRRRRRRRRRR@RRRRRRRRRRRRRR
SSSSSSSSSSSSSSSSSS@SSSSSSSSSSSSS
TTTTTTTTTTTTTTTTTTT@TTTTTTTTTTTT
UUUUUUUUUUUUUUUUUUUU@UUUUUUUUUUU
VVVVVVVVVVVVVVVVVVVVV@VVVVVVVVVV
WWWWWWWWWWWWWWWWWWWWWW@WWWWWWWWW
XXXXXXXXXXXXXXXXXXXXXXX@XXXXXXXX
YYYYYYYYYYYYYYYYYYYYYYYY@YYYYYYY
ZZZZZZZZZZZZZZZZZZZZZZZZZ@ZZZZZZ
00000000000000000000000000@00000
111111111111111111111111111@1111
2222222222222222222222222222@222
33333333333333333333333333333@33
444444444444444444444444444444@4
5555555555555555555555555555555@
66666666666666666666666666666666
77777777777777777777777777777777
88888888888888888888888888888888
99999999999999999999999999999999
ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ->^^^
Dan tentu saja, ini kode-golf , jadi jawaban tersingkat menang
[A-Z0-9]{1,32}
dan memungkinkan perilaku apa pun untuk input yang tidak cocok dengan itu.$
tidak akan muncul dalam inputJawaban:
Sekam , 23 byte
Cobalah online atau coba dengan karakter fancy mewah (tetapi bytecount tidak valid)!
Sayangnya saya tidak dapat menggabungkan keduanya
map
menjadi satu (kecuali dengan menggunakan tanda kurung, seharga 24 byte) ..Penjelasan
sumber
Ruby , 62 byte
Cobalah online!
Mengembalikan berbagai string. Bisa bermain golf lebih lanjut dengan membuang string yang bergabung dan mengembalikan array karakter 2D seperti biasanya, tapi saya tidak yakin apakah itu diperbolehkan di sini.
sumber
C (gcc) ,
132126 byteCobalah online!
Terima kasih kepada Jonathan Frech karena telah menghemat 6 byte.
sumber
puts("")
setara denganputchar(10)
.++a)putchar((x[a-s]-*_)?*_:64);
->)putchar(x[a++-s]-*_?*_:64);
.64
untuk1
.putchar
panggilan itu dapat digunakan untuk golfputchar(*_*(*_!=a[x-s]));
.Merah , 177 byte
Cobalah online!
Lebih mudah dibaca:
sumber
Arang , 21 byte
Cobalah online! Tautan adalah untuk mengucapkan versi kode. Penjelasan:
Versi sebelumnya dengan validasi input,
3432 byte. Sunting: disimpan 2 byte berkat hanya @ ASCII.Cobalah online! Tautan adalah untuk mengucapkan versi kode.
sumber
StringReplace
) Sebagai catatan, pengganti bawaan akan sangat praktisCast
R , 104 byte
Cobalah online!
sumber
Jelly ,
1817 byteMenggunakan karakter spasi. Untuk menggunakan
#
ganti⁶
dengan”#
biaya satu byte.Cobalah online!
Bagaimana?
sumber
³Ḣ,⁶yØA;ØD¤µ32СZY
18 yang saya rasa mungkin juga bisa diperbaiki! Akan keluar ...C ++ 14,
319 byte237Ini adalah pertama kalinya saya melakukan ini, dalam bahasa CodeGolf yang paling buruk: P
Cobalah secara Online!
sumber
Node.js, 85 byte
Port to Node.js disarankan oleh @DanielIndie
Cobalah online!
JavaScript (ES6),
10398 byteCobalah online!
sumber
+""
, kan?)x/32
untuk menyimpan 2 byte lagi, karenaBuffer
dipaksa untuk integer.f=(s,x=561,c=Buffer([48+x/33%43]))=>x<1749?(s[x++%33]==c?'@':x%33?c:`\n`)+f(s,x):''
Perl 5
-F
, 47 byteCobalah online!
sumber
Haskell , 86 byte
Untuk pendekatan yang jauh lebih bagus (dan lebih sedikit byte), lihat solusi Laikoni !
Cobalah online!
Atau untuk jumlah byte yang sama kita bisa menggunakan:
Cobalah online!
Penjelasan / Tidak Diundang
Operator
(#)
sangat mirip denganzipWith
namun fungsi hardcoded, st. ini digunakan#
jika dua karakter sama dan jika tidak maka yang kedua, tidak ditandai:Jika daftar pertama habis, itu hanya menambahkan elemen yang tersisa dari yang kedua:
Dengan penolong itu, kita hanya perlu membuat string
"A..Z0..9"
, mereplikasi setiap elemen 32 kali dan zip input dengan masing-masing string, ungolfed:sumber
max
. Saya pikir Anda harus memposting itu sebagai solusi Anda sendiri karena sangat berbeda dari solusi saya.Haskell , 74 byte
Cobalah online! String input
x
diisi dengan spasi hingga 32 dengantake 32$x++cycle" "
. Untuk masing-masing karakterc
dariA
keZ
dan0
ke9
, kita melihat karaktera
dari string input empuk dan menggantinya dengan~
saata
danc
adalah sama dan olehc
sebaliknya. Ini dicapai denganmax[c]['~'|a==c]
, yaitu misalnyamax "A" "~" = "~"
kapana = c = 'A'
, danmax "A" "" = "A"
kapanc = 'A'
dana = 'B'
. Karena ini menghasilkan string singleton dan bukannya char,do
-notation digunakan yang menggabungkan string singleton menjadi satu string.Berdasarkan solusi Haskell dari BMO .
sumber
Python 2, 138 byte
Mendukung karakter huruf besar dan kecil dan meninggalkan kolom kosong untuk spasi.
Jika bonus tidak sepadan, maka saya akan mendapatkan 125 byte dan hanya mendukung input huruf besar:
sumber
Stax , 15 byte
Jalankan dan debug itu
Ini digunakan
'#'
untuk menunjukkan gelembung diisi.Dibongkar, tidak diserang, dan dikomentari, sepertinya ini.
Jalankan yang ini
sumber
Pyth,
2320 byteCoba di sini
Penjelasan
sumber
APL + WIN, 56 byte
Anjuran untuk string input dan menggunakan karakter # sebagai pengenal:
Penjelasan:
sumber
C (gcc) , 124 byte
Cobalah online!
Alih-alih array hard-coded, saya menggantinya dengan fungsi pencarian saja. Untungnya set karakter ASCII memiliki rentang alfabet dan numerik yang berdekatan (saya sedang melihat Anda, EBCDIC!) Selain itu, saya memastikan untuk menjaga output agar tepat 32 karakter menggunakan
sprintf()
: jika ini bukan persyaratan tugas, maka fungsi akan menjadi 97 byte:Cobalah online!
sumber
CJam , 31 byte
Cobalah online! Menggunakan spasi sebagai karakter "lubang".
Jika membuntuti spasi putih diizinkan, maka ini berfungsi selama 29 byte :
Cobalah online!
Berikut adalah variasi 34 byte yang menggunakan blok penuh Unicode (
█
) sebagai gantinya:Cobalah online!
Penjelasan
sumber
Python 2 ,
1039694 byte-7 byte terima kasih kepada Mnemonic
-2 byte terima kasih Jonathan Frech
Digunakan
'
sebagai simbolCobalah online!
sumber
05AB1E , 19 byte
Cobalah online!
Penjelasan
sumber
a[b]
tidak berfungsi seperti yang Anda inginkan di sini, kan: P?MATL , 21 byte
Menggunakan spasi sebagai karakter penanda.
Cobalah online!
Penjelasan
sumber
Gangguan Umum , 150 byte
Cobalah online!
Penjelasan
sumber
Java 10,
120118117 byteCobalah online (untuk TIO saya telah menggunakan '█' (
9608
bukan35
) untuk visibilitas yang lebih baik).Penjelasan:
sumber
Retina , 64 byte
Cobalah online!
Pads string input di sebelah kanan dengan spasi hingga 36 karakter
Lalu, letakkan setiap karakter di barisnya masing-masing dan tambahkan
ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
sebelum itu.Cocokkan pasangan karakter yang sama pada baris yang sama, yang ada satu jika dan hanya jika karakter untuk baris tersebut cocok dengan salah satu
ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
. Ganti yang pertama dengan@
dan hapus yang kedua.Satu-satunya garis yang tidak cocok adalah garis dengan spasi, sehingga karakter non-spasi adalah blok 36 × 36. Ubah posisi itu.
Hanya simpan 32 karakter pertama di setiap baris
sumber
Tcl ,
153145 byteTerima kasih @sergiol untuk -8 byte
Cobalah online!
Penjelasan
sumber
SNOBOL4 (CSNOBOL4) ,
155150 byteCobalah online!
Penjelasan:
sumber
Prolog (SWI) ,
235229228222214198173167165 byte-6 byte terima kasih kepada @Cows quack , -6 byte terima kasih @ 0 '
Cobalah online!
Penjelasan
sumber
SOGL V0.12 , 19 byte
Coba Di Sini!
sumber
Oktaf , 61 byte
Cobalah online!
Fungsi kerjanya sebagai berikut:
sumber
Perl 6 , 57 byte
Cobalah online!
sumber