Diberikan 2 input (m = id awal minimum , n = jumlah id ), buat daftar id berurutan, mulai dari> = m, terdiri dari digit 0-9 di mana tidak ada 2 angka yang berdekatan adalah sama, misalnya 1232 adalah ok, 1233 tidak (berisi 2 '3 bersebelahan).
Contoh
untuk m = 985, n = 6, di bawah ini menunjukkan id apa yang akan dihasilkan / dilewati
...
985 - ok, 1st
986 - ok, 2nd
987 - ok, 3rd
# skip 0988 (contains '88')
989 - ok, 4th
# Skip 099x (contains '99')
# Skip 100x (contains '00')
1010 - ok, 5th
# Skip 1011 (contains '11')
1012 - ok, 6th
...
Keluaran
Setiap ID harus dicetak pada baris baru, seperti untuk urutan di atas:
985
986
987
989
1010
1012
Aturan
Aturan kode-golf standar, kemenangan jumlah byte terendah
code-golf
subsequence
beirtipol
sumber
sumber
Jawaban:
Jelly , 6 byte
Cobalah online!
Bagaimana itu bekerja?
sumber
Brachylog ,
1110 byteInput adalah daftar dua angka. Cobalah online!
Penjelasan
Built-in
ḅ
mengambil daftar atau string, seperti"1000220"
, dan membaginya menjadi blok-blok elemen yang berdekatan yang sama, seperti["1","000","22","0"]
. Dalam program ini, saya menerapkan~
operator untuk itu, sehingga bekerja secara terbalik: dibutuhkan daftar string, memeriksa bahwa setiap string terdiri dari pengulangan karakter tunggal dan string tetangga memiliki karakter yang berbeda, dan merangkai daftar. Predikat≤
menghitung angka mulai dari input pertama dengan urutan yang meningkat, dan saya memeriksa kondisinya, mencetak yang memuaskan dan berhenti ketika saya sudah menemukan cukup.sumber
05AB1E , 9 byte
Cobalah online!
Penjelajahan
sumber
Java 8, 83 byte
Penjelasan:
Cobalah online.
sumber
PowerShell , 59 byte
Cobalah online!
Pada dasarnya mirip dengan jawaban yang lain. Pengulangan selama kita memiliki angka yang tersisa untuk dicetak (
for(;$n)
), menguji apakah kita memiliki kecocokan regex terhadap dua digit dan jika tidak, hal itu menempatkannya pada pipa dan menurun$n
. Lalu kami menambah$m
dan mengulang lagi. Elemen-elemen diambil dari pipeline dan implisitWrite-Output
memberi kita output yang dipisahkan baris baru secara gratis.sumber
R ,
1119271 byteCobalah online!
Penggunaan
grepl
untuk mencari digit berulang.sumber
Jelly , 9 byte
Cobalah online!
Jika tidak karena batasan output,
Y
bisa dihilangkan.sumber
C, 73 byte
Cobalah online!
sumber
Perl 6 , 56 byte
Cobalah
Diperluas:
sumber
Retina , 34 byte
Cobalah online! Mengambil
n
danm
sebagai input pada saluran yang terpisah. Penjelasan:Matikan output otomatis dan hapus
n
dari buffer pekerjaan.Ulangi
n
kali.Cetak nilai
m
di akhir grup yang diulang berikut.Loop sementara ada angka yang berdekatan.
Konversikan ke unary.
Hitung jumlah string kosong, yang merupakan satu lebih dari jumlah karakter, sehingga menambahkan 1 dan mengonversi kembali ke desimal. Ini mengakhiri lingkaran dalam.
Setelah dicetak
m
, tambahkan 1 lagi dengan cara yang sama. (Baris terakhir tidak perlu aC`
karena itu adalah jenis tahap default untuk baris terakhir.) Loop luar secara implisit berakhir.Perhatikan bahwa mengonversi ke unary dan kembali ke desimal agak lambat; selama 39 byte, versi yang tidak melakukan konversi apa pun:
Cobalah online! Penjelasan:
$.(
menghitung panjang sisa substitusi, mudah tanpa benar-benar memperluasnya; karena panjang*_
secara implisit nilai yang cocok dan panjang_
tentu saja 1 ini hanya menambah nilai.sumber
Perl 5.10.0 +
-n
,4039 byteCobalah online!
-1 byte terima kasih kepada Xcali
Input pada dua baris, pertama n, lalu m. Pastikan tidak ada baris baru setelah m:
sumber
Perl 5 ,
-ln
33 byteMasukkan 2 baris pada STDIN, pertama mulai id kemudian hitung
Cobalah online!
sumber
$n.=<>
bekerja seperti itu, terutama dengan-=
...$n
bisa0
melakukan itu bersama-sama adalah salahPython 2 ,
8073 byte-7 byte terima kasih kepada Tn. Xcoder
Cobalah online!
sumber
Haskell , 70 byte
-19 byte berkat nimi.
Cobalah online!
17 byte yang didedikasikan untuk memisahkan dengan baris baru.
sumber
mapM
danprint
. Cobalah online!Stax ,
98 byte CP437Cobalah online!
Terjadi bertepatan dengan algoritma @ Mr.Xcoder dalam jawaban Jelly-nya.
-1 byte per komentar oleh @recursive.
Penjelasan
Menggunakan format yang tidak dibongkar untuk menjelaskan.
sumber
Haskell ,
949391 byte-1 byte terima kasih kepada Laikoni
-2 byte terima kasih kepada Zgarb
Cobalah online!
Golf Haskell pertama.
sumber
group(show a)
bisagroup$show a
.(<2).length
bisanull.tail
Pyth , 12 byte
Coba di sini
sumber
JavaScript (ES6), 50 byte
Mengambil input dalam sintaks currying
(m)(n)
.Cobalah online!
sumber
C # (.NET Core), 91 byte
Port jawaban @Steadybox 'C.
Cobalah online.
sumber
Perl 5 (
-nl
), 42 byteCobalah online!
sumber
AWK , 90 byte
Cobalah online!
Ini jauh lebih jelek daripada yang saya kira. Saya menemukan bahwa
AWK
hanya memiliki substitusi kembali di dalamnyagensub
fungsinya yang akan membuatnya tidak terlalu efisien untuk digunakan untuk aplikasi ini.Jadi ini adalah pendekatan yang sangat mudah untuk menambah penghitung ID, membelah penghitung di setiap karakter, perulangan melalui karakter untuk melihat apakah ada karakter yang sama dengan karakter sebelumnya. Jika tidak ada karakter berulang yang ditemukan, cetak penghitung ID dan tambah jumlah ID yang dicetak.
Saya akan mencoba untuk menahan diri dari membuat pernyataan sepanjang garis "
AWK
harus memiliki kemampuan untuk melakukan ekspresi reguler yang lebih kuat", tetapi itu akan sulit.sumber
Utilitas Bash + GNU, 35
Cobalah online .
sumber
Ruby , 47 byte
Cobalah online!
Jika Anda tidak suka tanda kutip, itu adalah 50 byte
Cobalah online!
sumber
Pip , 22 byte
Cobalah online!
Penjelasan
sumber