Saya benar-benar membenci digit 1
. Jadi, saya butuh bantuan Anda untuk mengonversi angka ke "formulir yang tepat".
Angka dalam bentuk yang benar tidak pernah memiliki dua 1
s berturut-turut. 101
tidak apa-apa, tapi 110
mengerikan.
Untuk mengkonversi, lewati saja semua angka yang tidak tepat dan hitung secara normal. Contohnya...
1 -> 1
2 -> 2
...
10 -> 10
11 -> 12
12 -> 13
...
108 -> 109
109 -> 120
110 -> 121
111 -> 122
dan seterusnya.
Program Anda harus mengambil bilangan bulat dan mengeluarkannya dalam bentuk yang benar. Ini adalah kode-golf , jadi kode terpendek dalam byte menang.
109 -> 120
konversi ...Jawaban:
Burlesque , 10 byte
{11 ~ [n!} FO
Versi yang lebih lama:
sumber
Perl 5 , 34 Bytes
Looping counter dan sesekali ganti double-one.
Uji
sumber
Utilitas Bash + GNU, 36
sumber
1$1
sudah cukup, bukan$1$1
?Pyth,
1311 byteDisimpan 2 byte berkat @FryAmTheEggman.
Demo langsung dan uji kasus.
Versi 13 byte
sumber
JavaScript, 53 byte
Alternatif (menggunakan pemahaman, panjang yang sama):
sumber
Python 2, 50
Fungsi anonim yang mencantumkan nomor yang tidak
11
berurutan, dan mengambil yangn
ke tiga. Kesalahan off-by-one dari pengindeksan nol dibatalkan dengan dimasukkannya0
dalam daftar.Secara teori, ini akan gagal untuk jumlah yang cukup tinggi di mana
f(n)>2*n
, tetapi ini seharusnya tidak terjadi sampain
setidaknya10**50
.51 byte:
Menghitung angka
i
sampai kuotan
angka tanpa11
terpenuhi.Suatu fungsi memiliki panjang yang sama karena diperlukan koreksi satu per satu.
sumber
Python 3 74
Masih perlu sedikit bermain golf.
Ini kekuatan yang sangat kasar sekarang.
sumber
Perl 5, 47 byte
sumber
JavaScript (ES6) 41
Sebagai fungsi anonim
Catatan: cara paling sederhana adalah 44:
Tes menjalankan cuplikan di bawah ini.
sumber
Haskell, 51 byte
Contoh penggunaan:
([x|x<-[0..],notElem('1','1')$zip=<<tail$show x]!!) 110
->121
.Bagaimana itu bekerja:
sumber
MUMPS, 37 byte
Cukup mudah. Satu-satunya hal yang "menarik" di sini adalah konstruk
j'[11
-'[
adalah operator "tidak mengandung", jadi itu"abc"'["ab"
salah dan"abc"'["cd"
benar. Meskipun kedua operanj'[11
menjadi angka, MUMPS tetap tidak terganggu. Ini akan dengan senang hati melakukan autocommerce baik operan ke string dan melanjutkan hidupnya. Hore!(Kebetulan, jika Anda baik-baik saja dengan program ini tidak pernah mengakhiri, kita dapat mempersingkat ini untuk 35 byte:
t2(i) f j=1:1 s:j'[11 k=k+1 w:k=i j
)sumber
PHP, 43 byte
sumber
Ruby, 24 byteTugas yang disalahartikan, akan dikerjakan ulang nanti!
sumber
11
. Misalnya,12
harus memberi13
, bukan12
.