Diberikan bilangan bulat n > 9
, untuk setiap kemungkinan penyisipan antara digit dalam bilangan bulat itu, masukkan tambahan +
dan evaluasi. Kemudian, ambil nomor asli modulo hasil tersebut. Keluarkan jumlah total dari operasi ini.
Contoh dengan n = 47852
:
47852 % (4785+2) = 4769
47852 % (478+52) = 152
47852 % (47+852) = 205
47852 % (4+7852) = 716
-----
5842
Memasukkan
Sebuah bilangan bulat positif dalam format yang nyaman , n > 9
.
Keluaran
Output integer tunggal mengikuti teknik konstruksi di atas.
Aturan
- Anda tidak perlu khawatir tentang input yang lebih besar dari tipe default bahasa Anda.
- Program lengkap atau fungsi dapat diterima. Jika suatu fungsi, Anda dapat mengembalikan output daripada mencetaknya.
- Celah standar dilarang.
- Ini adalah kode-golf sehingga semua aturan golf biasa berlaku, dan kode terpendek (dalam byte) menang.
Contohnya
47852 -> 5842
13 -> 1
111 -> 6
12345 -> 2097
54321 -> 8331
3729105472 -> 505598476
code-golf
math
number-theory
AdmBorkBork
sumber
sumber
D.s¨s.p¨R+¹s%O
tanpa melihat ini; PJavaScript,
4347 byteMengambil input sebagai string.
Edit:
+4 byte : Memimpin nol dalam JavaScript mengubah angka menjadi oktal):
sumber
(+'$&$''+$`)
?$`
kosong, dan itu akan membuang kesalahan mencoba untuk eval(13+)
(sebagai contoh).Brachylog , 20 byte
Cobalah online!
Penjelasan
Ini mengimplementasikan formula yang diberikan. Satu-satunya hal yang harus kita perhatikan adalah ketika a
0
berada di tengah-tengah input: dalam hal itu Brachylog menjadi cukup unik, misalnya tidak akan menerima bahwa daftar bilangan bulat yang dimulai dengan a0
dapat digabungkan menjadi bilangan bulat ( yang akan memerlukan mengabaikan terkemuka0
- ini terutama diprogram seperti itu untuk menghindari loop tak terbatas). Oleh karena itu untuk menghindari masalah itu, kami mengubah input ke string dan kemudian mengkonversi kembali semua input yang dibagi menjadi bilangan bulat.sumber
ES6 (Javascript),
42, 40 byteEDIT:
Golf
Uji
sumber
m<2**31
Anda maka Anda bisa mulai denganx=1
penghematan satu byte.Python 2, 45 byte
Menggunakan aritmatika daripada string untuk membagi input
n
menjadi bagiann/c
- bagian dann%c
, yangc
berulang melalui kekuatan 10.sumber
Jelly , 12 byte
TryItOnline!
Bagaimana?
sumber
Perl
35 3227 BytesTermasuk +3 untuk
-p
Disimpan 8 byte berkat Dada
sumber
C 77 + 4 = 81 byte
bermain golf
Tidak disatukan
sumber
r=0
sedemikian rupa sehingga jika fungsi dipanggil lagi hasilnya benar. Di suatu tempat di Meta, jika Anda menggunakan variabel global maka Anda harus berurusan dengan efek samping dari memanggil fungsi lebih dari sekali.r
global tetapi di dalam fungsinya sebagai pernyataan yang dapat Anda katakanr=0;
, lihat jawaban saya misalnya.Python 2,
686468 byte-4 byte terima kasih kepada atlasologist
* Input adalah sebuah string
sumber
lambda n:sum(int(n)%eval(n[:i]+'+'+n[i:])for i in range(len(n)))
8
atau9
setelahnya dan memberikan jawaban yang salah untuk orang lain (seperti kasus uji terakhir). Angka yang dimulai dengan nol adalah oktal. repl.it/EmMmC, 59 byte
t
adalah10,100,1000,...
dan mewakili potongan dalam jumlah besar.n/t
adalah bagian kanan dann%t
kiri. Jikat
lebih besar dari angka, itu selesai.Tidak digabungkan dan digunakan:
sumber
Retina , 38 byte
Hitungan byte mengasumsikan penyandian ISO 8859-1.
Tidak tepat efisien ...
Cobalah online! (Baris pertama memungkinkan suite tes yang dipisahkan dengan linefeed.)
Penjelasan
Di antara setiap pasangan karakter, kami menyisipkan koma, semua yang ada di depan pertandingan, titik koma, seluruh input, umpan baris, dan semuanya setelah pertandingan. Untuk input,
12345
ini memberi kita:Yaitu setiap kemungkinan pemisahan input bersama dengan sepasang input. Kami tidak membutuhkan baris terakhir itu:
Kami membuangnya.
Ini menggantikan setiap angka serta koma dengan representasi unary. Karena koma bukan angka, itu diperlakukan sebagai nol dan hanya dihapus. Ini menambahkan dua bagian di setiap pemisahan.
Ini menghitung modulo dengan menghapus semua salinan dari angka pertama dari angka kedua.
Itu saja, kita cukup menghitung berapa banyak
1
yang tersisa dalam string dan mencetaknya sebagai hasilnya.sumber
Pyth, 14 byte
Program yang mengambil input bilangan bulat dan mencetak hasilnya.
Suite uji
Bagaimana itu bekerja
sumber
Haskell, 62 byte
Menentukan fungsi
f
. Lihat lulus semua kasus uji.sumber
Perl 6 , 33 byte
Diperluas:
sumber
Mathematica, 75 byte
Ini menggunakan pencocokan pola pada daftar digit untuk mengekstraksi semua partisi menjadi dua bagian. Masing-masing partisi tersebut menjadi
a
danb
kemudian diganti denganHal penting di sini adalah bahwa jumlah dari daftar panjang yang tidak sama tetap unevaluated, jadi misalnya jika
a
adalah1,2
danb
adalah3,4,5
kemudian kita pertama mengganti ini dengan{1,2} + {3,4,5} + {}
. Istilah terakhir ada untuk memastikan bahwa itu masih tetap tidak dievaluasi ketika kita membagi angka secara merata. SekarangMap
operasi di Mathematica cukup digeneralisasikan sehingga bekerja dengan segala jenis ekspresi, bukan hanya daftar. Jadi, jika kita memetakanFromDigits
jumlah ini, itu akan mengubah masing-masing daftar itu kembali menjadi angka. Pada titik itu, ekspresi adalah jumlah bilangan bulat, yang sekarang akan dievaluasi. Ini menghemat satu byte dari solusiTr[FromDigits/@{{a},{b}}]
yang lebih konvensional yang mengubah dua daftar terlebih dahulu dan kemudian merangkum hasilnya.sumber
Sebenarnya ,
1615 byteSelamat datang saran bermain golf! Cobalah online!
Sunting: -1 byte berkat Teal pelican.
Tidak melakukanolf
sumber
╤╜d+╜%
MΣ)Ruby, 64 byte
Mengambil input sebagai string
sumber
0
oktal, artinya ini gagal untuk kasus uji terakhir. Berikut adalah solusi 78-byte yang mengatasinya.Befunge,
10196 byteCobalah online!
Penjelasan
sumber
APL, 29 byte
⎕IO
harus1
. Penjelasan (Saya tidak bisa menjelaskan dengan baik, semua keperluan untuk ini sangat disambut baik):sumber
C #, 67 byte
Program lengkap dengan ungolfed, metode yang dijelaskan dan uji kasus:
sumber
Attache , 48 byte
Cobalah online!
Penjelasan
sumber
Clojure,
9181 byteSunting: ini lebih pendek karena menyatakan fungsi anonim
(fn[v](->> ...))
dan tidak menggunakan->>
makro meskipun lebih mudah untuk membaca dan memanggilnya.Asli:
Menghasilkan urutan 1, 10, 100, ... dan mengambil 10 item pertama (dengan asumsi nilai input kurang dari 10 ^ 11), memetakan ke modulos seperti yang ditentukan dalam spesifikasi dan menghitung jumlahnya. Nama fungsi yang panjang membuat solusi ini cukup panjang tetapi setidaknya bahkan versi golf harus cukup mudah diikuti.
Pertama saya mencoba menyulap string tetapi membutuhkan banyak boilerplate.
sumber
Racket 134 byte
Tidak Disatukan:
Pengujian:
Keluaran:
sumber
R , 50 byte
Cobalah online!
sumber
SNOBOL4 (CSNOBOL4) , 92 byte
Cobalah online!
sumber
Ruby 45 Bytes
Ini adalah solusi yang sangat rapi. Secara teknis memang benar, tetapi sangat tidak efisien. Akan jauh lebih efisien untuk menulis q.to_s.size.times {...}. Kami menggunakan q.times karena menghemat karakter, dan jumlah tambahan kali melalui proc ekspresi hanya bernilai nol.
sumber
->q{(0..q).reduce{|s,x|p=10**x;s+q%(q/p+q%p)}}
PHP , 60 byte
Cobalah online!
sumber
Java 8,
12766 byte-61 byte dengan membuat port jawaban C # @adrianmp .
Coba di sini.
sumber
Pari / GP , 42 byte
Cobalah online!
sumber
Japt ,
11, 10 byteCobalah
Penjelasan
sumber