Tantangan
Kami mengambil tiga bilangan bulat positif a
, b
dan c
sebagai masukan. Menggunakan bilangan bulat ini, pertama buat urutan dalam rentang [0, c]
(inklusif di kedua ujungnya), dalam langkah-langkah b
. Misalnya, untuk a=4, b=2, c=100
, urutannya [0,2,4,...,96,98,100]
.
Untuk setiap angka dalam urutan ini yang dapat habis dibagi a
, gantilah dengan huruf berikutnya dalam alfabet huruf kecil, dimulai dengan huruf 'a' dan balut kembali ke 'a' setelah Anda mencapai 'z'.
Contoh:
Input: a=4, b=2, c=100
Keluaran:a2b6c10d14e18f22g26h30i34j38k42l46m50n54o58p62q66r70s74t78u82v86w90x94y98z
Aturan tantangan:
- Anda dapat mengasumsikan bahwa
a
,,b
danc
hanya bilangan bulat positif, di manab ≤ a ≤ c
. - Anda dapat menganggap
a
adalah kelipatanb
. - Anda dapat menganggap dapat
c
dibagi olehb
. - Output yang disukai adalah string tunggal yang disatukan seperti di atas, tetapi daftar / array juga dapat diterima.
Kasus uji:
Input: a=4, b=2, c=100
Output:
a2b6c10d14e18f22g26h30i34j38k42l46m50n54o58p62q66r70s74t78u82v86w90x94y98z
Input: a=9, b=3, c=174
Output:
a36b1215c2124d3033e3942f4851g5760h6669i7578j8487k9396l102105m111114n120123o129132p138141q147150r156159s165168t174
Input: a=10, b=2, c=50
Output:
a2468b12141618c22242628d32343638e42444648f
Input: a=25, b=1, c=25
Output:
a123456789101112131415161718192021222324b
Input: a=6, b=6, c=48
Output:
abcdefghi
Input: a=6, b=3, c=48
Output: a3b9c15d21e27f33g39h45i
Input: a=2, b=1, c=100
Output: a1b3c5d7e9f11g13h15i17j19k21l23m25n27o29p31q33r35s37t39u41v43w45x47y49z51a53b55c57d59e61f63g65h67i69j71k73l75m77n79o81p83q85r87s89t91u93v95w97x99y
Saya benar-benar ingin melihat jawaban dalam PHP , tetapi tantangan ini terbuka untuk bahasa apa pun. Ini codegolf , jadi jawabannya harus sesingkat mungkin. Aturan standar berlaku untuk fungsi / program dan celah default dilarang .
[codegolf]
yang paling umum saya sarankan. Disebutkan juga oleh JoKing, membuatnya spesifik bahasa tidak dianjurkan. Lebih baik membukanya ke semua bahasa saja. Adapun tantangan itu sendiri, harap tentukan lebih sedikit dan tambahkan beberapa kasus uji lagi. Berdasarkan contoh saya dapat melihat kisarannya[0,c]
, tetapi ini harus jelas tanpa melihat contoh.'z'
ke'a'
. Bisakah Anda memasukkan satu yang bisa?Jawaban:
PHP , 67 byte
Pertama-tama, terima kasih telah memposting tantangan yang sangat keren! Saya sangat menikmati pemecahannya :) Sekarang, inilah solusi 67 byte saya:
Untuk menjalankannya:
Atau Coba online!
Inilah solusi yang sama tanpa ungolfed dan dengan komentar penjelasan:
Saya melakukan solusi 60 byte, tetapi tidak membungkus :(
Cobalah online!
sumber
Japt , 15 byte
Uji secara online!
Penjelasan
sumber
c,a,b
.R ,
6563 byteCobalah online!
2 byte disimpan berkat JayCe!
Mengembalikan daftar string, karena R akan memaksa angka ke string. Untuk mencetak, cukup ganti trailing
z
dengancat(z,sep="")
.sumber
l=
tidak diperlukan. TIOClojure,
847977 byteBerikan sedikit cinta
Cobalah online!
(-7 byte terima kasih kepada @NikoNyrh!)
sumber
#(...)
dan gunakanfn
untuk mengekspresikan yang dalam. Ketika Anda berada di sana Anda dapat menggantimap
denganfor
membangun dan menyimpan lebih lanjut 4 byte.%1
dapat digantikan oleh%
;)Java 10,
9383 byteCobalah online sini . Terima kasih kepada Scrooble untuk bermain golf 10 byte.
Tidak Disatukan:
sumber
Perl 6 ,
6050 byteMenguji
Menguji
sumber
->\a,\b,\c
: gunakan saja$^a
dll. Danchr 97+$++%26
sedikit lebih pendek dari("a".."z")[$++%26]
. Akhirnya, Anda dapat menghilangkan rangkaian karena tantangan tidak memerlukannya. Itu akan menghemat 10 byte secara total, meninggalkan 50JavaScript (Node.js) , 62 byte
Cobalah online!
sumber
05AB1E ,
1715 byte-2 byte terima kasih kepada @MagicOctopusUrn .
Mengambil input dalam urutan
bca
.Cobalah secara online atau verifikasi semua kasus uji .
Penjelasan:
sumber
/ݹ*vyD³ÖiA¾è¼}?
adalah 16, hanya duplikaty
daripada menggunakanë
, yang?
akan mengabaikan jika itu mendorong karakter alfabet. Sebenarnya,/ݹ*εD³ÖiA¾è¼}?
bekerja untuk 15 genap, karena kita terlalu banyak menulis array output maka Anda dapat mengikat pemenang saat ini> :).ë
.C (gcc) ,
7472 byteCobalah online!
sumber
Python 2,
8070 byteMengembalikan daftar, karena OP mengatakan itu dapat diterima.
Pendekatan yang sangat berbeda dari jawaban Python 2 lainnya .
Cobalah online!
sumber
CJam , 23 byte
Cobalah online!
Membaca input as
b a c
dan dropping@
akan menjadi 22 byte (tidak yakin apakah itu valid).sumber
Python 2 ,
6563 byteMengembalikan daftar, karena OP mengatakan itu dapat diterima.
Cobalah online!
Versi sebelumnya yang digunakan selama proses kreatif (bekerja mundur):
84 byte
Mengembalikan ekspresi generator.
111 byte
Menggunakan generator untuk alfabet dan mengembalikan daftar.
sumber
next
. Bagus.PHP , 79 byte
Catatan: Tidak terlalu bagus di PHP
Cobalah online!
PHP , 84 byte
Ini hanya kode di atas yang sama hanya dalam format fungsi (karena Anda menginginkan jawaban PHP, mungkin ini lebih baik untuk Anda)
Cobalah online!
sumber
Excel VBA, 76 byte
Mengambil input,
a
,b
, danc
dari[A1]
,[B1]
dan[C1]
masing-masing kemudian output ke jendela segera VBE.sumber
Python 2 , 83 byte
Cobalah online!
sumber
Kotlin,
8079 byte-1 berkat OOBalance !
Cobalah online!
Pertama kali saya bermain golf (atau melakukan hal lain) di Kotlin! Mungkin bisa diperbaiki.
Sangat mirip dengan jawaban Java ini , saya sadar setelah menulisnya. Simpan
return
dan kalahkan terner untuk skor yang hampir sama.sumber
else
.Python3 -
111,101,98, 94 byteMungkin bukan yang terpendek, tetapi ada ruang untuk perbaikan
Cobalah online!
sumber
next(q)if x%a==0else x for x in[y*b
Arang , 22 byte
Cobalah online! Tautan adalah untuk mengucapkan versi kode. Penjelasan:
sumber
Haskell ,
7169 byteCobalah online!
71 byte sebelumnya:
Cobalah online!
Penjelasan:
sumber
CJam ,
6463 byte ( aduh )Cobalah online!
Penjelasan
Ini pasti bisa dibuat lebih baik sehingga merasa bebas untuk bergabung!
Perubahan
Helen memotong satu byte!
Lama:
97:Y;riri:Bri\/1+,[{B*}*]{X\_@\%0={Yc\Y):Y'{i={97:Y;}&}{X\}?}fX;
baru:
97:Y;riri:Bri\/),[{B*}*]{X\_@\%0={Yc\Y):Y'{i={97:Y;}&}{X\}?}fX;
Dengan mengubah
1+
ke)
kita dapat memotong satu byte.sumber
Jelly , 16 byte
Program lengkap mengambil argumen
c b a
yang mencetak hasilnya.Cobalah online!
sumber
Clojure, 117 byte
Sangat penting. : /
sumber
C (gcc / dentang),
8068 bytePort jawaban Java saya . Cobalah online di sini .
sumber
printf(L"搥挥"+!(i%a),i%a?i:i/a%26+97)
alih-alihi%a?printf("%d",i):putchar(i/a%26+97)
Jelly , 14 byte
Cobalah online!
sumber
Python 2 dan 3 -
123128 BytesAnda harus meletakkannya
f=
di depanlambda
dan kemudian menyebutnya denganf(a,b,c)
tetapi saya cukup yakin itu diizinkan.sumber
Ruby ,
59 5855 byteCobalah online!
Mengembalikan daftar
sumber