Tantangan:
Periksa apakah nomor yang diberikan membentuk number staircase
atau tidak
Memasukkan :
Integer (lebih besar dari 0 dan bukan desimal). CATATAN: Anda dapat mengambil input sebagai string, array digit.
Keluaran:
nilai kebenaran / kepalsuan tergantung pada apakah nomor membentuk tangga atau tidak
Tangga nomor:
Sebuah tangga nomor integer yang, ketika membaca dari kiri ke kanan:
- Mulai dengan 1
- yang dapat diikuti oleh 2
- yang dapat diikuti oleh 3
- dan seterusnya sampai
n
- maka jumlahnya turun mulai dari n - 1
- lalu n - 2
- lalu n - 3
- dan seterusnya hingga mencapai 1
Catatan :
Bagian boleh digunakan untuk menunjukkan bahwa jika panjang> lebih besar dari 1. Jika itu urutan harus diikuti apa adanya. yaitu: 12321
Contoh:
12321 ---> true
12345654321 ---> true
9 ---> false
1 ---> true
2 ---> false
123421 ---> false
112312318901323 ---> false
123456789101110987654321 ---> true
Catatan :
Input yang diberikan akan selalu berupa bilangan bulat lebih besar dari 0 dan tidak akan berupa desimal. Output Anda harus berupa truthy or falsy
nilai tergantung pada input
Pembatasan:
Ini adalah kode-golf sehingga kode terpendek dalam byte (untuk setiap bahasa pemrograman) menang.
code-golf
math
number
decision-problem
Muhammad Salman
sumber
sumber
[1,2,3,4,5,6,7,8,9,1,0,1,1,1,0,9,8,7,6,5,4,3,2,1]
untuk123456789101110987654321
?Jawaban:
R , 97 byte
Cobalah online!
Diambil
n
sebagai acharacter
atau ainteger
; menggunakancharacter
akan memberikan hasil yang benar untuk bilangan bulat yang tidak dapat dipegang secara tepat sebagai 64-bitdouble
.Menghasilkan nomor tangga sampai menemukan setidaknya selama
n
ini, kemudian menguji kesetaraan.Setara dengan:
sumber
function(n)
dengann=scan();
lebih pendek? (untuk bilangan bulat tentu saja)Jelly , 5 byte
Cobalah online!
Peringatan: Sangat lambat (cepat untuk
1
dan121
)! TambahkanDL
untuk membuatnya lebih cepat.sumber
JavaScript (ES6),
6257 byteDisimpan 2 byte berkat @ l4m2
Mengembalikan boolean.
Cobalah online!
Bagaimana?
Dimulai dengan k = 1 , kita mencari k di awal dan di akhir string, dan secara berulang mengulangi proses pada sub-string tengah yang tersisa dengan k + 1 . Rekursi berhenti segera setelah tidak ada kecocokan lagi. Input adalah nomor tangga jika sub-string terakhir sama dengan k .
Contoh untuk s = "1234321":
sumber
m[0]==s&
malah membuatnya lulus semua kasus uji (tapi masih gagal pada yang lain seperti"123217"
)f=(s,k=1)=>(m=s.match(`^${k}(.*)${k}$`))?f(m[1],k+1):s==k
?Haskell ,
5554 byte-1 byte terima kasih kepada Laikoni !
Cobalah online!
sumber
Pyth,
1312 byteMenyimpan satu byte berkat RK.
Coba di sini
Penjelasan
Jika Anda benar-benar menginginkan input sebagai integer, Anda dapat menggunakannya
}Qmsjk+Sd_Std
, tetapi ini sangat lambat.sumber
/
alih-alih pada saat selesai}Q
secara otomatisQ
Python 2 , 69 byte
Cobalah online!
sumber
C # (Visual C # Interactive Compiler) ,
138107102 byteCobalah online!
Penjelasan:
sumber
Zip...Skip
metode dalam komentar saya sebelumnya gagal[1,1]
, yang seharusnya kembalitrue
jika saya memahami spesifikasi. Saya sudah menghapusnya.05AB1E ,
98 bytePeringatan: SANGAT LAMBAT! Menambahkan
g
ke awal untuk mempercepatnya.Cobalah online!
Penjelasan:
Penjelasan Lama:
Cobalah online!
sumber
gLη€ûJså
adalah yang lain, di mana Anda dapat melihat vektorisasi palindromisasi menggunakan€û
palindromize masing-masing.gLη€ûJså
untuk 8 byte yang tidak meledakkan TIO.Python 2 , 77 byte
Cobalah online!
sumber
Stax , 14 byte
Jalankan dan debug itu
Sangat lambat untuk jumlah yang lebih besar.
sumber
Attache ,
575546 byteCobalah online!Ah, itu jauh lebih elegan.
Dengan
Generate
(49 byte):Penjelasan
Fungsi generasi hanya membuat
N
nomor tangga. Kemudian, pencarian ini berakhir setelah`>=:`#&_
puas. Diperluas, ini adalah:Jadi, ini berakhir setelah panjang output fungsi generasi setidaknya dari input. Dengan demikian, ini menghasilkan nomor tangga terkecil setidaknya selama nomor input. Jadi, jika input adalah nomor tangga, hasilnya akan menjadi nomor tangga yang sama, dan sebaliknya nomor tangga terpanjang berikutnya. Dengan demikian, pemeriksaan sederhana dengan kesetaraan ke input asli sudah cukup untuk menentukan apakah itu nomor tangga.
Attache, 55 byte
Cobalah online! Dengan rencana rekursi.
sumber
J , 40 byte
Cobalah online!
Saya tidak cukup senang dengan soluiton ini - banyak
@
dan tinju<
.sumber
SNOBOL4 (CSNOBOL4) , 109 byte
Cobalah online!
Anehnya, mengganti
'1'
di baris kedua dengan1
menyebabkan program gagal pada input1
.sumber
K , 36 byte
Mengambil string seperti "12321" sebagai parameter.
Fungsi ini ditulis sebagai rantai panjang aplikasi fungsi, seperti pada
f g h x
, jadi baca versi komentar dari bawah, naik.{x+1}
adalahlambda x: x+1
, x adalah nama param standar. Lihat https://pastebin.com/cRwXJn7Z atau bantuan penerjemah untuk makna operator.Kami menghasilkan nomor tangga dengan
n
di tengah dengan{,/$(1+!x),1+1_|!x}
:Seluruh fungsi
{|/($x)~/:{,/$(1+!x),1+1_|!x}'1+!#x}
:sumber
Haskell ,
646058 byte-6 terima kasih kepada @BMO!
Cobalah online!
sumber
12345678910987654321
, jika Anda dapat membuat daftar dengan banyak elemen.Perl 5
-lp
, 49 byteCobalah online!
0
= benar, apa pun = salahsumber
Java 10, 142 byte
Cobalah online.
Penjelasan:
sumber
Japt, 11 byte
Mengambil input sebagai string.
Cobalah
Penjelasan
Alternatif,
109 byteSolusi ini, yang dapat mengambil input sebagai string atau integer, akan mengembalikan array angka untuk jujur atau, akhirnya, membuat kesalahan untuk falsey, jika tidak melumpuhkan browser Anda sebelum itu. Gunakan dengan hati-hati.
Cobalah
sumber
Retina ,
4543 byteCobalah online! Tautan termasuk kasus uji. Sunting: Disimpan 2 byte berkat @Leo. Penjelasan:
Inisialisasi
n
ke1
.Saat
s
dimulai dan diakhiri dengann
:Hapus
n
dari ujungs
dan selisihn
.Tes apakah
n
masih ada.sumber
\d
dapat menjadi.
dan menyelamatkan Anda dua byteRegex (PCRE) , 92 byte
Cobalah online!
Saya terbuka untuk semua saran untuk meningkatkan ini.
sumber
Berkat pengguna berikut:
Python 2 , 147 byte
Cobalah online!
sumber
true
danfalse
tetapi nilai-nilai yang benar dan palsu.1
dan0
akan bekerja misalnyas[0]
sajastartswith
? Kesalahan diperbolehkan, dan Anda dapat mengatakan 'output 1 untuk tangga, apa pun (termasuk tidak ada) [karena stderrr diabaikan] untuk non-tangga'.g
tidak pernah 1. Anda mungkin harus menguji solusi ini sebelum mempostingnya ...