Juga dikenal sebagai [analog root]
( Berlawanan dengan akar digital! );)
Root digital dari angka adalah penjumlahan terus-menerus dari digit-digitnya hingga menjadi satu digit, misalnya, root digital 89456 dihitung seperti ini:
8 + 9 + 4 + 5 + 6 = 32
3 + 2 = 5
Root digital 89456 adalah 5.
Diberi digit sebagai input melalui STDIN , cetak / kembalikan semua kemungkinan dua digit angka yang memiliki akar digital itu. Jika Anda memerlukannya, ia dapat menyertakan dirinya sendiri, misalnya 05
Ini semua input dan output yang mungkin:
(Anda bisa memilih apakah akan memasukkan nol di depan untuk digit itu sendiri)
I / O
0 => 0 atau 00 atau tidak sama sekali
1 => 01 dan / atau 1, 10, 19, 28, 37, 46, 55, 64, 73, 82, 91 - Pastikan 1 tidak mengembalikan 100
2 => 02 dan / atau 2, 11, 20, 29, 38, 47, 56, 65, 74, 83, 92
3 => 03 dan / atau 3, 12, 21, 30, 39, 48, 57, 66, 75, 84, 93
4 => 04 dan / atau 4, 13, 22, 31, 40, 49, 58, 67, 76, 85, 94
5 => 05 dan / atau 5, 14, 23, 32, 41, 50, 59, 68, 77, 86, 95
6 => 06 dan / atau 6, 15, 24, 33, 42, 51, 60, 69, 78, 87, 96
7 => 07 dan / atau 7, 16, 25, 34, 43, 52, 61, 70, 79, 88, 97
8 => 08 dan / atau 8, 17, 26, 35, 44, 53, 62, 71, 80, 89, 98
9 => 09 dan / atau 9, 18, 27, 36, 45, 54, 63, 72, 81, 90, 99
Tidak ada celah standar , dan ini kode-golf , jadi jawaban tersingkat dalam byte menang.
Selamat untuk Heeby Jeeby Man atas jawaban 46 byte otaknya yang menakjubkan!
Jawaban:
Pyke, 6 byte
Coba di sini!
sumber
JavaScript (ES6),
273130 byteKembali
0
untuk0
atau berbagai solusi sebaliknya.Demo
Tampilkan cuplikan kode
sumber
+
untuk menyimpan byte lain? Meskipun itu tidak akan bekerja dengan string stdin seperti itu kurasa.+
asalnya ... Diperbarui. Terima kasih!05AB1E ,
13129 byte-3 byte terima kasih kepada Adnan
Cobalah online!
Penjelasan
sumber
SOSO
, karena jumlahnya tidak akan pernah lebih besar dari 99.тL<
tidak benar-benar lebih pendek dari polos99Ý
. ;)Haskell , 21 byte
f
mengambil bilangan bulat dan mengembalikan daftar bilangan bulat.Cobalah online!
d
dan menghasilkan kisaran dengan setiap angka ke-9 hingga batas 99, kecuali untuk kasus rumit0
.0
, gunakan kekuatan0^d==1
untuk0
dan==0
untuk semua digit lainnya. Jadi99^0^0^d
memberi1
untuk0
tetapi99
untuk hal lain.sumber
Jelly , 8 byte
Cobalah online!
Algoritma berbeda dari jawaban saya yang lain.
sumber
Brain-Flak , 46 byte
Cobalah online!
Penjelasan
Jawaban ini menggunakan ide dari jawaban Megatom yaitu menggunakan ketinggian tumpukan sebagai perbedaan antara penghitung lingkaran dan kenaikan. Seperti jawaban sebelumnya, jawaban ini memiliki lingkaran luar yang besar untuk menangkap semua nol. Di dalam loop kami mendorong 10 untuk bertindak sebagai penghitung, kami kemudian memulai loop bersarang lainnya. Dalam loop ini kita mengurangi counter dengan 1
Lalu kami memunculkan dua item teratas, yaitu penghitung dan item terakhir yang kami hitung. Kami menambahkan ini ke ketinggian tumpukan untuk mengimbangi penurunan decrementation, kami kemudian mendorong ini dua kali, sekali untuk output dan sekali sehingga dapat dikonsumsi untuk menghitung hasil berikutnya. Mendorong sesuatu dua kali berarti kita secara tidak sengaja mendorong nilai tambahan yang perlu dihapus pada akhir eksekusi.
Alasan mengapa ini hanya mengalahkan Megatom adalah jawaban Megatom dipaksa untuk mendapatkan tumpukan tinggi sementara hasil terakhir masih di tumpukan. Ini berarti mereka terpaksa menggunakan yang agak mahal
[()]
untuk mengurangi total satu per satu. Dengan memindahkan duplikat ke akhir loop saya dapat menghindari harus menggunakan[()]
dengan biaya tambahan{}
pada akhir program. Jika Megatom menggunakan strategi ini, jawabannya akan terlihat seperti:juga 46 byte.
Brain-Flak , 52 byte
Cobalah online!
Penjelasan
Outerloop utama membuat case khusus untuk input nol. Jika nol adalah input, kita melompati seluruh loop, pop nol dan kemudian tidak menghasilkan apa-apa. Kalau tidak, kita memasuki loop. Di sini kita mendorong loop 10 kali setiap kali menambahkan 9 ke atas tumpukan, menjaga nilai-nilai lama. Karena 9 mempertahankan jumlah digital, ini akan memberi kita nilai selanjutnya. Setelah loop telah kedaluwarsa, kami menggunakan nol yang dihasilkannya untuk keluar dari loop yang kemudian muncul
{}
di akhir.Brain-Flak , 56 byte
Cobalah online!
Penjelasan
Versi ini bekerja sangat mirip dengan yang terakhir, kecuali kita mengulangi 9 kali, bukannya 10 meninggalkan nilai aslinya. Untuk melakukan ini, kita harus mengatur ulang cara kita menangani memori sedikit. Semua byte yang mungkin telah kita simpan menggunakan metode ini dimasukkan ke dalam pembersihan.
sumber
Python 2 , 29 byte
Cobalah online!
sumber
Brachylog , 12 byte
Cobalah online!
Penjelasan
sumber
Bash ,
3127 byteCobalah online!
sebelumnya
sumber
brace expansion: (...) A sequence expression takes the form {x..y[..incr]}, where x and y are either integers or single characters, and incr, an optional increment, is an integer. (...) When the increment is supplied, it is used as the difference between each term. The default increment is 1 or -1 as appropriate.
Dyalog APL, 15 byte
Bagaimana?
⍵,10⍴9
- input gabungan dengan 109
s (⍵ 9 9 9 9 9 9 9 9 9 9
).+\
- jumlah kumulatif.(×⍵)/
- perluas waktu signum - di mana signum memberi 1 untuk 1-9 dan 0 untuk 0.Cobalah online!
Dyalog APL, 24 byte
Membutuhkan
⎕IO←0
.Bagaimana?
sumber
Brain-Flak , 48 byte
Cobalah online!
Saya dapat menambahkan penjelasan nanti.
sumber
Mathematica, 25 byte
bekerja untuk 0
sumber
0
. Ini juga tidak akan termasuk angka-angka yang digit-digitnya berjumlah lebih dari 9. (mis. Tidak9
akan ada99
dalam output).Jelly , 12 byte
Cobalah online!
Bagaimana itu bekerja
sumber
0
Sebenarnya , 18 byte
Cobalah online!
Penjelasan:
sumber
PHP, 41 Bytes
mencetak nilai yang digarisbawahi menggarisbawahi
ERA
adalah konstanta terpendek di PHP dengan nilai131116
. Anda dapat menggantinya dengan alternatif yang membosankan100
atau mengakhiri program dengandie
Versi Online
sumber
Brain-Flak ,
5452 byteCobalah online!
Perampokan pertama saya dengan Brain-Flak, dan saya pikir saya telah melakukannya dengan cukup baik. Adakah yang lebih berpengalaman memiliki saran?
Bagaimana itu bekerja:
sumber
Jelly , 12 byte
Cobalah online!
sumber
PHP, 35
Buat rentang
[$argn, 100)
dengan langkah9
sebagai array dan cetaklah. Jika inputnya0
menciptakan range[0,0]
=>array(0)
.sumber
Python,
4851 byte3 byte disimpan berkat @WheatWizard
sumber
~-x
alih-alih(x-1)
if ~-x%9
~-n==~-x%9or x==n
untuk menyimpan byteR , 23 byte
Cobalah online!
TIO menggunakan tautan
function(x)
alih-alihpryr::f
, karena TIO tidakpryr
menginstal paket.sumber
Pyke, 6 byte (versi lama)
Komitmen bekerja
Penjelasan:
sumber
Ruby , 25 byte
Cobalah online!
sumber
C (gcc) , 55 byte
f()
tidak perlu dipanggil dengan argumen apa pun; yangn
hanya ada bukannya di luar fungsi untuk menyimpan byte.Cobalah online!
sumber
printf
dalam header loop: Cobalah online!Arang ,
1411 byteCobalah online! Tautan adalah untuk mengucapkan versi kode. Sunting: Disimpan
2 byte dengan tidak mencetak apa pun untuk input nol dan 1 byte dengan menggunakan operasi vektorisasi3 byte berkat hanya @ ASCII. Penjelasan:sumber
Julia 0,6 , 18 byte
Saya menggunakan ternary untuk menangkap
0
case, dan rangen:9:99
untuk membuat angka. Di julia suatu rentang adalahAbstractVector
dan dapat digunakan sebagai pengganti angka aktualVector
dalam kebanyakan kasus, tetapi hanya akan dicetak karena1:9:91
tidak memenuhi tantangan, jadi saya membungkusnya[_;]
untuk mengumpulkan konten menjadi aVector
.Cobalah online!
sumber
Perl 5 , 25 + 1 (
-n
) = 26 byteCobalah online!
sumber
Clojure, 33 byte
sumber
Clojure , 38 byte
atau sebagai fungsi anonim yaitu 29 byte
Cobalah online!
terima kasih @steadybox
sumber
n=9
tidak ada nomor terakhir99
,. Cobalah online! Anda juga dapat menyimpan byte dengan menghapus spasi di antaraf[n]
dan(if(...
.Perl 5, 62 byte
Pasti ada jalan yang lebih pendek
sumber
Gol> <> , 12 byte
Cobalah online!
Bagaimana itu bekerja
sumber