Sejumlah tangga adalah bilangan bulat positif x seperti itu yang n digit th (satu diindeks dimulai dengan digit paling signifikan) adalah sama dengan x% (n + 1) . Itu sedikit suap jadi mari kita lihat sebuah contoh. Ambil 7211311 , jika kita mengambil residu modular 7211311 pada rentang 2-8 kita mendapatkan yang berikut:
7211311 % 2 = 1
7211311 % 3 = 1
7211311 % 4 = 3
7211311 % 5 = 1
7211311 % 6 = 1
7211311 % 7 = 2
7211311 % 8 = 7
Ini adalah angka dari 7211311 ! Jadi 7211311 adalah nomor tangga.
Tugas
Tulis kode yang mengambil ketika diberi angka positif sebagai input, akan menampilkan dua nilai yang berbeda satu jika nomor tersebut adalah nomor tangga dan yang lainnya jika tidak.
Ini adalah kompetisi kode-golf sehingga tujuan Anda harus meminimalkan jumlah byte dalam kode sumber Anda.
Uji Kasus
Inilah 13 nomor tangga pertama:
1, 10, 20, 1101, 1121, 11311, 31101, 40210, 340210, 4620020, 5431101, 7211311, 12040210
code-golf
number
decision-problem
Wisaya Gandum
sumber
sumber
0
nomor tangga? Banyak jawaban yang berpikir demikian.Jawaban:
Haskell, 55
57bytePendekatan yang berbeda dari solusi Haskell lainnya.
Terima kasih xnor untuk menyimpan 2 byte.
sumber
let
ekspresi.Brachylog ,
25211614 byteCobalah online!
Pengajuan Brachylog pertama: D
mungkin sangat tidak ungolfed... banyak terima kasih kepada Leaky Nun dan Fatalize untuk dorongan dan bantuan untuk bermain golf ini dari 25 hingga hanya 14. :) :)sumber
Javascript,
42413938 byte-4 byte berkat @Shaggy dan @ETHProductions
Ini mengambil nomor sebagai string dan mengembalikan
false
jika nomor tersebut adalah nomor tangga dantrue
sebaliknya.Cuplikan kode contoh:
sumber
!
karena tantangan tidak secara eksplisit menentukan bahwa Anda harus mengembalikan yangtrue
benar dan yangfalse
salah, hanya bahwa Anda harus mengembalikan 2 nilai yang berbeda.i
sendiri:s=>[...s].some(d=>s%i--^d,i=s.length+1)
~x == -(x+1)
pada bilangan bulat danx%-y == x%y
, saya pikir Anda bisa mendapatkan satu lagi:s=>[...s].some(d=>s%i++^d,i=~s.length)
05AB1E , 6 byte
Kode:
Menggunakan penyandian 05AB1E . Cobalah online!
Penjelasan:
sumber
Haskell, 60 byte
Mengambil nomor sebagai int
sumber
Mathematica, 60 byte
Cobalah online!
@alephalpha memutarnya menjadi 48
Mathematica, 48 byte
selanjutnya adalah 24120020
sumber
Python 2 , 54 byte
Cobalah online!
sumber
Japt ,
97 byteMengambil input sebagai string.
Menguji
Penjelasan
Kami secara implisit mengambil string sebagai input.
Petakan setiap karakter dalam string.
J
adalah konstanta Japt untuk-1
, dan´
menurunkannya dengan 1 pada setiap pass (--
dalam JavaScript). Jadi, pada pass pertama, ini memberi kita-2
.Kami menggunakan nilai itu untuk melakukan operasi modulo pada string input yang secara otomatis dilemparkan ke integer dalam proses. Dalam JavaScript
x%-y
memberikan hasil yang sama denganx%y
.Balikkan string yang dihasilkan.
Periksa apakah string baru sama dengan input asli dan secara implisit menampilkan hasilnya sebagai boolean.
sumber
(Y+2
, aku merasa seperti itu bisa lebih pendek setidaknya 1 byte ...¥£%´JÃw
:-) (berfungsi karenax%y == x%-y
dalam JS)Neim , 6 byte
Penjelasan:
Cobalah online!
sumber
Jelly , 7 byte
Cobalah online!
sumber
Python 2 , 56 byte
Cobalah online!
sumber
Perl 6 , 32 byte
Cobalah online!
.comb
adalah jumlah karakter dalam representasi string dari argumen input$_
(yaitu, jumlah digit).1 + .comb ... 2
adalah urutan angka dari satu lebih besar dari jumlah digit ke 2.«%«
adalah hyperoperator modulus yang memberikan sisa ketika$_
, argumen masukan di sebelah kiri-nya, dibagi oleh masing-masing elemen dari urutan di sebelah kanan nya:$_ % 2, $_ % 3, ...
.[~]
menggabungkan angka-angka itu ke dalam angka baru, yang dibandingkan dengan argumen input menggunakan operator persamaan stringeq
.sumber
PHP , 43 byte
Cobalah online!
PHP , 44 byte
mencetak 1 untuk true dan nothing for false
Cobalah online!
sumber
Pyth , 13 byte
-1 byte, terima kasih kepada Okx .
Cobalah online!
Penjelasan
Solusi alternatif , masih 13 byte (terima kasih kepada karlkastor )
Cobalah online! Itu pada dasarnya sama dengan solusi pertama, kecuali yang digunakan
i
untuk mengkonversi dari array angka ke angka, dan rentang yang dihasilkan berbeda.sumber
ss`M_
denganjk_
untuk menyimpan 2 byte.j
menghasilkan string sedangkan saya perlu nomor untuk dibandingkan dengan input (yang merupakan angka).qi_.e%Q+2k`QT
menggunakan enumerated map (.e
) sebagai ganti map. Dan mengubah sisanya menjadi basis 10 int dari daftar alih-alih menggunakan join.C ++, 104 byte
1) versi asli:
2) dalam bentuk yang dapat dibaca:
Cobalah secara Online!
sumber
Pari / GP , 42 byte
Cobalah online!
sumber
Python 2 ,
66 60 5857 bytex and
( tidak harus memeriksa 0)enumerate
Cobalah online!
sumber
Python 3: 63 Bytes
Jika aku bisa menghitung berapa kali aku berharap 'menghitung' lebih pendek ...
Cobalah online!
sumber
lambda m:all(m%n==int(x)for n,x in enumerate(str(m)[::-1],2))
Java (OpenJDK 8) , 60 byte
Cobalah online!
Versi non-string.
sumber
Java 8,
156149byteTidak Disatukan:
Cobalah secara Online!
UPDATE:
-7 byte : dihapus tidak berguna
{}
dan digantiInteger.parseInt(...)
olehnew Integer(...)
-9 byte : terima kasih kepada Kevin Cruijssen, menghapus banyak yang tidak berguna
()
, digunakanLong
sebagai gantiInteger
danprint
bukanprintln
. Terima kasih Kévin!sumber
new Integer
bisanew Long
(-3 byte);println
bisa berupaprint
(-2 byte); dan Anda dapat menghapus kurung di sekitarnyanew Long(s[0])%i+f;
(-4 byte).Arang ,
2015 byteCobalah online! Output
-
untuk nomor tangga, tidak ada yang lain. Tautan adalah untuk mengucapkan versi kode.sumber
Python 2, 61 byte
sumber
q / kdb +, 34 byte
Larutan:
Contoh:
Penjelasan:
Masukkan nomor input ke string, hitung mulai dari 0..panjang string, tambahkan 2 untuk semua, balikkan dan
mod
masukkan setiap nomor ke dalam input asli. Keluarkan hasil mod ke string dan kurangi daftar, periksa apakah itu sama dengan string nomor input:Catatan:
Sebagian besar solusinya adalah untuk menghasilkan
2,3,4..
daftar, saya punya solusi lain yang melakukan lebih sedikit barang, tetapi akhirnya menjadi 37 byte setelah bermain golf:sumber
Clojure, 75 byte
Input adalah string, menggunakan
map
dan trailing%
berakhir lebih pendek darifor[i(range(count %))]
pendekatan.sumber
Haskell, 62 byte
f x=and$zipWith(==)(reverse$show x)$map(head.show.mod x)[2..]
Alih-alih membalikkan daftar (tak terbatas) dari moduli, ia memotong daftar dengan zipnya dengan string-respresentation terbalik dari integral x, yang kemudian memastikan elemen-bijaksana yang sama.
sumber
Perl 5 , 41 byte
39 byte kode + 2 bendera
-pa
Cobalah online!
Tidak menghasilkan apa-apa (undef) untuk nomor tangga, 1 untuk apa pun
sumber