Tantangan
Untuk setiap karakter string kecuali yang terakhir, lakukan hal berikut:
Keluarkan karakter saat ini.
Diikuti dengan mengeluarkan secara acak dari daftar berikut, beberapa kali antara 1 - 5 (inklusif):
- Karakter saat ini
- Karakter selanjutnya dari string
- Versi switchcase dari karakter yang Anda gunakan saat ini
- Versi switchcase dari karakter selanjutnya dari string.
Uji Kasus
String
-> SSSTSStrTrIiinIIngn
, . , . , . Hello world!
-> ,,, .. , ,, .... , , .. .. . HHH HHEeelLlLllooO wwOworOOrrrRllDd!!D
Programming Puzzles and Code Golf
-> PrPPrRrOooooogggRgGraAraaaMMMmmmimMIiininGGgG PPPPuZzZZzZzzZzllLLEEeEsEsssS a aANnNddD C COCoooOOdeDe E GGGoOllFFf
Catatan
- Anda hanya perlu menerapkan versi switchcase karakter jika karakter tersebut merupakan bagian dari alfabet (AZ dan az).
- Fungsi acak Anda tidak perlu seragam tetapi masih harus memiliki kesempatan untuk mengembalikan elemen apa pun dalam daftar yang diberikan.
- Anda diizinkan untuk menggunakan format I / O standar apa pun.
- Anda dapat mengasumsikan bahwa panjang input lebih besar atau sama dengan dua.
- Anda dapat berasumsi bahwa input hanya terdiri dari karakter ASCII.
- Judul bukan merupakan test case (tidak disengaja jika ini adalah test case yang valid).
- Switchcase artinya mengubah char menjadi huruf kecil jika huruf besar dan mengubahnya menjadi huruf besar jika huruf kecil.
String
menghasilkanSSSTSStrTrIiinIIngn
[S]SSTSS [t]rT, [r]I, [i]inII, [n]gn
mana karakter di antara blok adalah poin-poin pertama (" Keluarkan karakter saat ini "), dan karakter lainnya adalah 1-5 kali secara acak, satu dari empat pilihan untuk itu karakter. Tetapi saya setuju, beberapa penjelasan yang lebih eksplisit akan sesuai. Terlepas dari uji kasus itu tidak terlalu jelas kita harus memilih pilihan acak 1-5 kali. Alih-alih memilih pilihan acak yang diulang 1-5 kali (seperti jawaban Gaia saat ini).Jawaban:
Gaia , 25 byte
Cobalah online!
Terima kasih kepada Kevin Cruijssen karena menunjukkan 2 bug!
Perhatikan bahwa
4ṛ
ini karenaṛ
diimplementasikan untuk integerz
sebagai pythonrandom.randint(1,z+1)
, yang mengembalikan integerN
sedemikian rupa1<=N<=z+1
.sumber
SSSTSStrTrIiinIIngn
([SSSTSS, trT, rI, iinII, ngn]
) tampaknya mencerminkan hal ini, dan saat ini bukan output yang mungkin dalam program Anda (saya pikir).5ṛ
dapat mengakibatkan6
beberapa alasan Cobalah online ? PS: Apakah tidak ada bilangan bulat untuk daftar rentang, atau berkisar untuk loop di Gaia?for
jenis konstruk, tapi saya cukup yakin ituₓ
yang bahkan tidak didokumentasikan pada halaman wiki.APL (dzaima / APL) , 23 byte
Fungsi awalan diam-diam anonim.
Cobalah online!
2(
...)/
terapkan fungsi infiks diam-diam berikut antara setiap pasangan karakter:-
switchcase⍤
dari,
gabungan pasangan,,
pertahankan pasangan untuk itu{
...}⊇
pilih elemen berikut dari itu:?5
angka acak dalam kisaran 1 ... 54⍴⍨
merangkak sebanyak itu?
indeks acak untuk itu∊
ϵ daftar (ratakan)sumber
Perl 6 , 60 byte
Cobalah online!
Bagian huruf kecil / huruf besar agak mengganggu.
sumber
$/
dan$0
bersama-sama dan penggunaan.lc
dari string, dan kemudian membuat salinan string dan penggunaan.uc
, dan concat dua bersama-sama? Tidak yakin apakah itu bahkan mungkin, atau lebih pendek dari Anda saat ini$/.lc,$/.uc,$0.lc,$0.uc
, tapi itu berarti Anda akan menggunakan$/
,$0
,.lc
, dan.uc
sekali setiap.(.lc~.uc for $0~$/).comb
lebih lama. Perl 6 benar-benar ingin membedakan string dan daftar, jadi"abc"[0] eq "abc"
(itu berpura-pura menjadi daftar item tunggal).{.lc,|.uc}($/,|$0)
untuk -5 byte, dan cukup gunakan daftar kecocokan{.lc,|.uc}(@$/)
untuk -8 byte. tio.run/…Jelly , 12 byte
Cobalah online!
sumber
Bash , 121 byte
-20 byte terima kasih kepada Nahuel
-9 byte berkat roblogic
Cobalah online!
Jawaban asli
Bash , 150 byte
Telah melakukan bashing golf yang sangat sedikit dan mencoba meningkatkan bash saya, jadi ada komentar yang menyambut.
Cobalah online!
Kode adalah loop langsung melalui karakter pengaturan karakter saat ini
c
dan berikutnyan
, kemudian membuat array dari 4 kemungkinan, mengulangi salah satunya sehingga ada persis 5. Selanjutnya kita mengocok array itu, dan kemudian memilih n elemen dari itu, di mana n itu sendiri adalah acak antara 1 dan 5.sumber
printf %s "$c"
do
dandone
dapat diganti dengan tidak berdokumen{
dan}
Python 2 , 107 byte
Cobalah online!
sumber
05AB1E ,
1817 byteTerinspirasi oleh jawaban Gaia dari @Giuseppe .
-1 byte terima kasih kepada @Shaggy .
Cobalah secara online 10 kali atau verifikasi semua kasus uji 10 kali .
Penjelasan:
sumber
INè
, dapatkah Anda menyimpan sesuatu dengan mendorong karakter pertamay
?¨vNUy5LΩFy¹X>è«D.š«Ω?
t
,T
, ataus
untuk masukan"String"
dalam program Anda, sementara seharusnya selalu dimulai denganS
.Arang , 27 byte
Cobalah online! Tautan adalah untuk mengucapkan versi kode. Penjelasan:
Lingkari semua indeks string input.
Kecuali untuk indeks pertama, mengulangi angka acak dari 1 hingga 5 termasuk ...
... ekstrak karakter sebelumnya dan berikutnya dari string, ambil versi huruf besar dan kecil, dan pilih karakter acak empat.
Cetak karakter di indeks saat ini.
sumber
perl 5 (
-p
), 77 byteTIO
sumber
$&
bukan$1
, danchop
+-l
bukannyas/.$//
Japt
-P
, 14 byteCobalah
sumber
Python 3 , 167 byte
Cobalah online!
sumber
Jelly , 14 byte
Cobalah online!
Penjelasan
sumber
C (GCC)
175162 byte-12 byte dari LambdaBeta
Cobalah online
sumber
0
di baris pertama.S
sebagai parameter dan menambahkan variabel Anda ke daftar argumen: Coba online!0
, yang membuatnya tidak layak untuk dimiliki#define
lagiPowerShell ,
1541051039587 byte-67 byte berkat mazzy yang tidak bisa dihentikan
Cobalah online!
Bukan metode yang fantastis tetapi berhasil.Sekarang cukup bagus. Mengambil input melalui splattingsumber
Scala 2.12.8, 214 byte
Versi golf:
Bermain golf dengan baris dan indentasi baru:
Tidak Disatukan:
sumber
a :: b :: Nil
menjadia::b::Nil
? Sama untuka :+
,a:+()
ataua.:+()
mungkin bekerjaa::b::Nil
menyebabkan kesalahan kompilasi.+:
Apakah metode didefinisikan pada daftar, sehingga mungkin menghemat ruang dengan menyingkirkan paren luar?Perl 5
-n
, 61 byteCobalah online!
sumber
C # (Visual C # Interactive Compiler) ,
236213209 byteCobalah online!
sumber
char b=a[0]
->var b=a[0]
, ruang ekstra dalam deklarasid
in for-loopPermintaan T-SQL, 286 byte
Coba online, sayangnya versi online selalu menunjukkan hasil yang sama untuk varchar yang sama, tidak seperti MS SQL Server Management Studio
sumber
C # (Visual C # Interactive Compiler) , 156 byte
Cobalah online!
sumber
Japt
-P
,4316 byteDipersingkat dengan banyak sekarang!
Cobalah
sumber
ä
deskripsi mengatakan itu memberikan tiga argumen, dengan yang terakhirx+y
. Tapi seperti yang Anda lihat di sini , itu hanya mengembalikan 1. Apakah ini bug?C (gcc) ,
110109 byteCobalah online!
-1 terima kasih kepada ceilingcat
Jumlah karakter yang dicetak (per karakter input) tidak acak secara acak:
sumber
Zsh,
113107 byteDengan banyak bantuan dari
man zshexpn
danman zshparam
. Cobalah secara Online!sumber