Tantangan:
Buat program yang mengambil input dari bilangan bulat non-nol positif dan menampilkan 4 angka berikutnya dalam urutan yang dijelaskan di bawah ini.
Catatan: Memeriksa apakah input sebenarnya bilangan bulat bukan nol yang positif tidak diperlukan
Urutan:
Setiap angka dalam urutan ini (selain dari yang pertama, yang merupakan input) harus terdiri dari n digit, di mana n adalah bilangan genap. Jika kita membagi angka menjadi n / 2 pasangan, untuk setiap pasangan, angka pertama harus menjadi jumlah kali angka kedua muncul di angka sebelumnya
Penjelasan visual :
Pertimbangkan contoh ini "urutan pemula" atau input 6577
Angka berikutnya dalam urutan harus terlihat seperti ini 161527
Karena input memiliki 1 "6", 1 "5" dan 2 "7" s.
Jika input memiliki terlalu banyak digit (lebih dari 9 dari satu digit) Anda tidak akan bisa mendapatkan output yang benar.
Contoh: 111111111111
(12 1)
Nomor berikutnya secara berurutan harus menggambarkan 12 1. Jadi kita membaginya menjadi 9 1 dan 3 1 (jumlah 9 + 3 = 12)
Nomor berikutnya:9131
Anda harus mengulangi 4 kali untuk input, dan output (baik mengembalikan daftar / array 4 bilangan bulat, atau output dengan memisahkannya dengan spasi, baris baru juga dapat diterima)
"Jumlahnya dapat ditulis dalam banyak cara, bagaimana cara menulisnya?" :
Jika Anda memikirkannya, input contoh 6577
juga dapat ditulis sebagai 271516 (dua 7, satu 5, satu enam). Namun ini adalah output yang tidak valid. Anda harus mengulangi angka dari kiri ke kanan. Jadi 161527. Jika itu 7657
Anda akan mengulangi jumlah 7, maka jumlah 6 lalu jumlah 5, maka output yang valid akan271615
Contoh I / O:
Input: 75
Output:1715 211715 12311715 4112131715
Input: 1
Output:11 21 1211 3112
Input: 111111111111
(12 1)
Output:9131 192113 31191213 23411912
Ini tidak seperti pertanyaan "Katakan apa yang Anda lihat", karena urutannya berbeda: https://oeis.org/A005150 <- Yang ini mengembalikan angka seperti ini:
Input: 1211 Output: 111221
Sementara urutan yang saya minta akan melakukan
Input: 1211 Output: 3112
Dua urutan berbeda dan memerlukan algoritma yang berbeda.
Urutan pertanyaan saya: https://oeis.org/A063850 urutan
"Kemungkinan duplikat": https://oeis.org/A005150
Spesifikasi penting:
Karena tidak cukup jelas untuk beberapa orang yang mencoba menjawab pertanyaan ini, output yang benar untuk k chars di mana k> 9 bukanlah "kc" (di mana c adalah char) tetapi 9c (k-9) c dll. Dengan demikian output yang benar untuk 12 1 bukan 121
(12 1) tetapi 9131
(9 1, (12-9) 1 dan seterusnya)
Jika ragu, kode Anda salah jika pernah menampilkan angka dengan jumlah digit ganjil (seperti 121), ia harus memiliki keluaran angka digit genap karena sifat urutannya.
Ini adalah kode-golf sehingga kode dengan kemenangan bytes paling sedikit.
sumber
1111111111111111111
(19 1 )23411912
bukan23411219
?Jawaban:
PowerShell ,
111104 byteCobalah online!
sumber
$i
dalam loop Anda, mengapa tidak hanya loop langsung suka$z=$args;0..3|%{...
$args
(dan saya awalnya berpikir saya akan menggunakan$i
). Saya akan mengukurnya tetapi kemudian pertanyaan itu ditutup.Python 2 , 116 byte
Cobalah online!
sumber
1111111111111111111
salah. Seharusnya919111
tetapi memberi919121
11
output input harus21 1211 3112 132112
, saya tidak mengerti mengapa itu output111
sebagai iterasi pertama yang menyebabkan seluruh rantai menjadi buruk05AB1E ,
302321 byteCobalah online!
Penjelasan
sumber
Mathematica, 117 byte
Sepertinya itu tidak perlu selama ini.
sumber
C # 246 byte
Tidak Terkumpul:
Coba di sini (Ketikkan input ke bingkai bawah setelah dikompilasi dan tekan ENTER)
sumber
Jelly , 27 byte
Cobalah online!
Berturut-turut
€
S tidak dapat disarangkan karena rantai tidak dapat disarangkan.Bersarang dengan tautan terpisah: 27 byte.
Cetak alih-alih penumpukan: 27 byte.
Penjelasan
sumber
PHP, 141 Bytes
Cobalah online!
sumber