Karakter alfanumerik memiliki nilai ASCII:
0-9 -> 48-57
A-Z -> 65-90
a-z -> 97-122
Tantangan Anda adalah mengambil integer sebagai input, dan menghasilkan berapa banyak karakter yang dapat dibuat menggunakan angka berurutan dari angka itu. Kode karakter mungkin tumpang tindih. 666
harus menghasilkan 2
, karena Anda memiliki 66
dua kali.
Kasus uji:
Input: 5698
Possible characters: '8' (56), 'E' (69), 'b' (98)
Output: 3
Input: 564693
Possible characters: '8' (56), 'E' (69)
Output: 2
Input: 530923864209124521
Possible characters: '5' (53), 'V' (86), '4' (52)
Output: 3
Input: 1111111
Possible characters: 'ooooo' (5*111)
Output: 5
Input: 5115643141276343
Possible characters: '3' (51), '8' (56), 'L' (76), 's' (115)
Output: 4
Input: 56789
Possible characters: '8' (56), 'C' (67), 'N' (78), 'Y' (89)
Output: 4
Input: 94
Possible characters: ''
Output: 0
Input: 1
Output: 0
Format input dan output adalah opsional (ya, Anda dapat menggunakan integer sebagai string).
ŒžKÇÃg
tidak bekerja?1111111
test-case.Ã
, itu jauh lebih masuk akal sekarang setelah saya membaca apa yang dilakukannya, sial.Brachylog , 22 byte
Cobalah online!
Penjelasan
sumber
T
?MATL ,
1713 byteCobalah online! Atau verifikasi semua kasus uji .
Penjelasan
sumber
Java 7,
204197195 bytePenjelasan:
Kode uji:
Coba di sini.
sumber
r
). Namun, saya bisa bermain golf 7 byte dengan meletakkan semua yang lain di dalam for-loop, dalam satu ternary. Saya akan melihat apakah saya bisa melakukan saran kedua Anda nanti. Waktu makan siang saya selesai lagi, jadi saya harus kembali bekerja. Akan mengingatnya.JavaScript (ES6),
7170 byteUji kasus
Tampilkan cuplikan kode
sumber
Perl 5 , 47 byte
46 byte kode +
-p
bendera.Cobalah online!
Saya tidak dapat menemukan cara yang lebih singkat untuk menulis itu
48..57,65..90,97..122
:map{ord}0..9,a..z,A..Z
(mendapatkan nilai karakter ascii) lebih lama satu byte. Dan melakukanfor$c(0..122){$\+=chr($c)=~/\pl|\d/ for/(?=$c)/g}}{
(mencari semua angka, tetapi hanya menyimpan orang-orang yang jumlahnya sesuai dengan nilai ascii huruf (\pl
) atau digit (\d
)) akan menjadi 5 byte lebih lama (catatan yang\pl|\d
tidak dapat diganti oleh\w
karena yang terakhir juga termasuk garis bawah)) .Pendekatan sebelumnya (49 byte):
sumber
PHP, 68 Bytes
Versi Online
sumber
JavaScript (ES),
165161156154153 byteYa, RegEx jelas bukan alat yang tepat untuk pekerjaan di sini!
Cobalah
sumber
Retina , 52 byte
Cobalah online! (termasuk test suite)
sumber
Python 2 ,
746462 byteCobalah online!
sumber
Haskell,
161157138129126 byteSaya ingin tahu apakah ada cara yang lebih baik untuk menghapus dupes dari daftar daripada mengimpor Data.List untuk nub?
sumber
Data.Lists
bukanData.List
, Anda dapat menggunakan:y<-tail$powerslice x
.Data.Lists
. Bahkan disebutkan dalam tips golf untuk Haskell - tidak ada yang mengeluh sejauh ini.or $ f <$> list
adalahany f list
:any(elem$read y)[...]
.Pyth,
191714 bytemengambil string.
-3 Bytes berkat @LeakyNun
Cobalah!
Penjelasan
sumber
idT
, Anda bisa menggunakansd
.l@jGUTmr0Csd.:
mungkin lebih pendek (tidak yakin apakah itu berfungsi).Jelly , 8 byte
Input adalah array digit.
Cobalah online!
Bagaimana itu bekerja
sumber
Ruby, 50 byte
Membaca dari input standar; mengharuskan penerjemah Ruby dipanggil dengan
-n
opsi (while gets
loop implisit ).Bisa dikurangi menjadi 43 byte jika diizinkan untuk cocok dengan garis bawah.
sumber
111
, yang seharusnya kembali1
tetapi Anda memberi kembali0
.Japt , 24 byte
Cobalah online!
Versi 27-byte alternatif:
Cobalah online!
sumber