Diberikan integer input n >= 10
, output rata-rata semua rotasi deduplicated dari integer.
Sebagai contoh, untuk input 123
, rotasi adalah 123
(tidak ada rotasi), 231
(satu rotasi) dan 312
(dua rotasi). Rata-rata dari mereka adalah (123 + 231 + 312) / 3
atau 222
.
Sebagai contoh lain, ambil 4928
. Rotasi adalah 4928
, 9284
, 2849
, dan 8492
. Mengambil rata-rata dari keempat angka itu sama 6388.25
.
Sebagai contoh lain, untuk input 445445
, rotasi deduplicated yang 445445
, 454454
dan 544544
, sehingga output 481481
.
Untuk input 777
, hanya ada satu rotasi deduplicated, jadi outputnya 777
.
Aturan
- Jika berlaku, Anda dapat mengasumsikan bahwa input / output akan sesuai dengan tipe Integer asli bahasa Anda.
- Input dan output dapat diberikan dengan metode apa pun yang mudah .
- 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.
code-golf
math
number-theory
AdmBorkBork
sumber
sumber
Jawaban:
Python 3 ,
3836 byteMengambil digit sebagai argumen terpisah. Terima kasih kepada @Rod untuk menyarankan Python 3, menghemat 2 byte.
Cobalah online!
sumber
APL (Dyalog) , 9 byte
Fungsi monadik mengambil vektor digit sebagai argumen.
Cobalah online!
Saya mengambil rata-rata digit
+/÷≢
, kemudian mengulanginya dengan panjang input≢⍴
, dan akhirnya dikonversi dari basis 10.Secara konsep, saya mengambil jumlah rotasi (tanpa membawa):
Ini baru
4+2+9+8
diulang 4 kali. Kemudian mengkonversi dari basis10
(yang membawa untuk saya) dan membaginya dengan panjang. Meskipun saya membagi dengan panjang sebelumnya karena itu sama dan menyimpan byte.sumber
Java 10,
163137767271 byte-36 byte berkat @Nevay .
-61 byte terima kasih kepada @ OlivierGrégoire dengan membuat porta @Dennis 'Python 3 jawaban .
-1 byte dengan mengambil input sebagai Daftar digit, bukan String.
Penjelasan:
Cobalah online.
sumber
n->{var s=new java.util.HashSet();var r=0d;for(int l=n.length(),x;l-->0;)if(s.add(x=new Integer(n=n.substring(1)+n.charAt(0))))r+=x;return r/s.size();}
n->java.util.stream.IntStream.range(0,n.length()).map(i->new Integer(n.substring(i)+n.substring(0,i))).distinct().average().getAsDouble()
orElse(0)
sebagai gantigetAsDouble()
.(int)
untuk 5 mote byte, jika perlu.Math.pow
sudah mengurusnya. Itu akan menghemat 3 byte.(int)
dan*.1
itu akan misalnya output6388.888...
bukan6388.25
untuk input4928
. Dan jika saya melemparkan seluruh hal atau hanya.pow
keint
gantinya, itu akan menampilkan6388
.Sekam , 5 byte
Cobalah online!
Penjelasan
Sekam , 7 byte
Cobalah online!
Penjelasan
sumber
5
solusi byteṙ
atauŀ
, dan karakter pertama (di sebelah kiri) tidakA
R ,
847364 byteCobalah online!
Input sebagai daftar digit.
Terima kasih kepada MickyT karena telah mengurangi 11 byte! 8 byte dicukur oleh bukti Dennis bahwa deduplikasi tidak diperlukan.
sumber
array(D,K+1:0)
lebih pendek darimatrix(D,K+1,K)
satu byte.05AB1E , 9 byte
Cobalah online!
sumber
v
tanpay
, menarik.gFÀD})¨Osg/
adalah tempat saya berpikir..æ = pop a compute permutations by function, usage: .æ<FUNC>}
perintah? Saya juga tidak, tapi sepertinya cocok untuk ini.Stax , 6 byte
Jalankan dan debug itu
Program ini mengambil string yang dibatasi kutipan sebagai input, dan menyatakan rata-rata sebagai fraksi yang dikurangi. mis.
777/1
Tidak perlu menduplikasi duplikasi rotasi. Itu tidak pernah mengubah hasilnya.Dibongkar, tidak diserang, dan dikomentari, sepertinya ini.
Jalankan yang ini
sumber
Perl 6 , 15 byte
Cobalah online!
Rata-rata adalah digit rata-rata yang diterapkan ke setiap posisi desimal, jadi digit rata-rata kali ....
1 x $_
menghasilkan string 1s yang dipaksa untuk string oleh multiply.Mengambil daftar digit sebagai input. Urutan akan membutuhkan .cache sebelum penjumlahan, dan angka atau masukan string akan memerlukan .comb.
sumber
Bahasa Wolfram (Mathematica) , 22 byte
Cobalah online!
sumber
JavaScript (Node.js) , 43 byte
Cobalah online!
sumber
Jelly ,
65 byteCobalah online!
Bagaimana itu bekerja
sumber
Japt , 8 byte
Mengambil input sebagai array string satu digit.
Cobalah
Penjelasan
sumber
APL (Dyalog Unicode) ,
2114 byte SBCSCobalah online!
Fungsi awalan Tacit. Mengambil input sebagai string.
Terima kasih kepada Adám untuk menghemat 7 byte yang mencerahkan .
Bagaimana?
sumber
Python 2,
8377 byteEDIT: -6 byte terima kasih kepada @ovs
sumber
Arang , 11 byte
Cobalah online! Tautan adalah untuk mengucapkan versi kode. Penjelasan:
sumber
J , 10 byte
Ini adalah port solusi APL H.PWiz yang hebat untuk J.
Mengambil daftar digit sebagai argumen.
Penjelasan:
+/%#
rata-rata digit (bagi%
jumlah digit+/
dengan jumlah mereka#
)#$
membuat daftar salinan rata-rata sesuai dengan jumlah digit10#.
konversi bentuk basis 10Cobalah online!
sumber
Perl 5
-lpF
,2422 byteCobalah online!
Melakukannya sebagai daftar digit hanya 1 byte lebih pendek dan terasa seperti curang:
Cobalah online!
sumber
usrt
? : P/usrt
direktori? Bagaimanapun, diperbaiki. Terima kasihRuby , 60 byte
Cobalah online!
sumber
Pari / GP , 34 byte
Mengambil input sebagai daftar digit.
Cobalah online!
sumber
Ruby , 33 byte
Cobalah online!
Port jawaban Dennis's Python 3
Inilah upaya lumpuh saya (74 byte)
Cobalah online!
sumber
C ++,
218208 byte-10 byte terima kasih kepada Zacharý
Dan, untuk menguji:
sumber
#include
dan<
, dan Anda dapat menghapus{}
sekitar keduanya++c;
dans+=v;
. Anda mungkin dapat memindahkanint s=0
ke awal dengan variabel Anda yang lain.n=0
yang kedua untuk loop, karena seharusnya sudah tercapai0
saat itu.m/=10;m+=std::pow(10.f,c-1)*t;
=>m=m/10+std::pow(10.f,c-1)*t
. Dan tidak akan menggunakanint
alih-alihauto
bekerja?int s=0;
dengan variabel lain, dan apakah Anda perlu kawat gigi di sekitars+=v;
?n>0
=>n
mungkin bekerja.Pyth, 12 byte
Mungkin bisa diperbaiki.
Coba di sini!
sumber
o
. Jika Anda melakukan itu dan melakukan I / O sebagai daftar digit, Anda bisa mendapatkannya hingga 8 byte .Q
.J, 23 Bytes
Mengambil input sebagai string
Penjelasan
sumber
Matlab, 65 byte
Akan bekerja pada ini, cukup yakin itu bisa dilakukan dengan lebih baik.
sumber
Clojure, 139 byte
Fitur bahasa yang kurang optimal untuk mengubah urutan karakter ke integer.
sumber
dc, 37 byte
Ini adalah program lengkap, membaca input dan mencetak output:
Ia bekerja dengan memisahkan angka ke dalam digit-digitnya, dan mengalikan mean dari digit-digit tersebut dengan repdigit panjang yang sesuai (yang dibangun
d
saat kita mulai).sumber