Terinspirasi oleh ini . Ada angka, yang diberikan sebagai integer, string, atau array digit (pilihan Anda). Temukan basis di mana representasi nomor akan memiliki paling "4" dan kembalikan basis itu.
Hasil Angka 624 5 444 10 68 16
batasan:
- Basis yang dikembalikan tidak boleh lebih besar dari input.
- angka kurang dari atau sama dengan abs (4) tidak boleh dianggap sebagai input yang valid, sehingga pengembalian yang tidak terdefinisi dapat diterima
[1,15,3,64,43]
untuk beberapa nomor di basis80
. Anda hanya mengeluarkan nomor basis, sehingga secara teknis Anda dapat menguji setiap basis dari2
hinggan
.1
,,2
dan3
, yang memiliki angka "4" (0) yang sama di setiap basis? Juga, banyak angka memiliki angka yang sama "4" dalam banyak basis (misalnya,4
dalam basis apa pun> 5,44
dalam basis apa pun> 45,14
dalam basis 9, atau basis apa pun> 15, dll). Haruskah jawaban yang benar menjadi basis terkecil dengan jumlah "4" terbesar?Jawaban:
APL (
3119)Sekarang tes semua basis yang mungkin.
Penjelasan:
⍳K←⎕
: baca input pengguna, simpan di K. Buat daftar dari 1 hingga K, yang merupakan basis untuk dicoba.{
...}¨
: untuk masing-masing ini, jalankan fungsi berikutK⊤⍨K⍴⍵
: menyandikan K ke dalam basis itu memberikan daftar digit (sebagai angka) per basis. Gunakan digit K (perkiraan terlalu tinggi, tetapi tidak masalah karena yang tidak digunakan semuanya akan menjadi nol).4=
: lihat yang ini sama dengan 4+/
: jumlah ini, sekarang kita tahu berapa merangkak per basis⊃⍒
: berikan indeks daftar jika itu diurutkan ke bawah, sehingga indeks yang terbesar ada di depan. Ambil item pertama dari daftar ini.sumber
⍨
GolfScript, 30 karakter
Bekerja untuk pangkalan apa pun - uji kodenya secara online .
Komentar: Solusi ini didasarkan pada versi asli pertanyaan. Dengan demikian dapat mengembalikan basis yang lebih besar dari input, misalnya untuk input 4 itu dengan benar mengembalikan basis 5 - yang tidak lagi valid oleh aturan baru.
sumber
GolfScript (23 karakter)
atau
atau
Perhatikan bahwa ini mengambil input dari stdin: untuk perbandingan yang adil dengan versi GolfScript Howard kurangi satu char.
Howard menunjukkan bahwa aturan telah berubah, dan itu tidak terlalu logis bahwa mereka sekarang mengecualikan
4
sebagai input yang mungkin ketika memiliki output yang valid (bilangan bulat apa pun lebih besar dari 4). Untuk menutupi kasus itu juga membutuhkan 2 karakter tambahan, yang dapat ditambahkan dengan segala macam cara:atau
menjadi beberapa yang jelas.
sumber
Python 2.x, 77 karakter
Berfungsi hingga basis 98 dan angka paling banyak 98 digit.
sumber
J, 38 karakter
Pemakaian:
sumber
VBA, 121
pemakaian:
?k(num)
=k(A1)
sumber
For w=5To a
Mathematica 59
Kode
Mari kita beri nama fungsi di atas.
Penjelasan
Count[IntegerDigits[n,k],4]
: Hitung jumlah merangkak dalam representasi dasar k dari n .Sort
basis dari paling sedikit ke paling 4s.Beberapa nomor khusus
Sekarang mari kita terapkan basis mana ke nomor khusus berikut.
Jika Anda mengonversi masing-masing nomor ke basis yang sesuai, Anda akan melihat apa yang spesial dari mereka.
sumber
n
sana. Juga,MaximalBy
sangat membantu, mengetuknya menjadi 49 byte:MaximalBy[Range[a=#],a~IntegerDigits~#~Count~4&]&
(abaikan saja pesan yang mencoba menggunakan basis-1)Japt
-h
, 10 byte444
di base10
adalah[4,4,4]
yang berisi angka dan digit4
3 kali tetapi444
di base100
adalah[4,44]
yang juga berisi digit4
3 kali, tetapi hanya sebagai angka satu kali. Mengingat hasil yang diharapkan dalam tantangan untuk444
kasus uji, saya kira kita seharusnya menghitung angka 4:Cobalah
Tetapi jika kita sedang menghitung angka 4 maka:
Cobalah
sumber
C - (114 karakter)
Dalam semua kemuliaan golfy:
Dan agak ungolfed:
Hanya untuk bersenang-senang di sini adalah output untuk angka-angka
[0,127]
(ini adalah pangkalan terbesar di bawah nomor input itu sendiri).sumber
R -
148137 karakter(Jadi, jauh dari sisa kompetisi tetapi masih)
Pada dasarnya mengubah input dari basis 10 ke semua basis dari 4 ke n (menggunakan modulo
%%
dan divisi integer%/%
) dan pilih indeks yang pertama memiliki paling banyak 4s.sumber
Terjemahan J dari solusi APL @marinus:
Hanya untuk bunga, berikut adalah beberapa nilai:
Ini menghasilkan basis terkecil yang memberikan transformasi empat. Untuk beberapa nilai terakhir dalam tabel, representasi terlihat seperti "4n" (mis. 31 dalam basis 7 adalah "43").
sumber
Jelly , 6 byte
Cobalah online!
Output "semua" mendasarkan hingga N yang memberikan 4 paling banyak. Jika Anda ingin basis maksimal atau minimal, tambahkan
Ṁ
(maks) atauṂ
(minimal) masing-masing.Bagaimana itu bekerja
sumber
05AB1E ,
109 byte-1 byte berkat @Cowabunghole .
Jika banyak basis memiliki jumlah yang sama dari 4s, itu akan menghasilkan yang terkecil (yaitu
16
akan menghasilkan6
, tetapi12
juga akan menjadi output yang mungkin).Cobalah secara online atau verifikasi semua kasus uji .
Penjelasan:
sumber
Qƶà
dengank>
? yaitu menemukan indeks berbasis 0 dari max dan menambahkannya?C # dengan Linq 273
atau
Cukup yakin jumlah variabel dapat dikurangi dan jika bisa dikonversi menjadi? Baiklah...
sumber
C # (
482~ 423 Bytes)Upaya pertama pada solusi 'golf'. Saya menggunakan algoritma yang pada dasarnya sama dengan VBA di atas. Saya mungkin bisa menyimpan beberapa byte yang menggarisbawahi fungsi konversi, atau memperpendek nama. Seperti yang saya katakan ini adalah upaya pertama, jadi harap bersikap lembut.
Dengan spasi putih:
sumber
namespace
tidak diperlukan. Semua nama harus karakter tunggal, termasukProgram
dancBase
. Dan ya, Anda harus sebariscBase
. Juga, gabungkan deklarasi dan inisialisasi, yaituint c=0,m=0
,.int
parameter, dan mengembalikanint
parameter, bahkan tanpaMain
metode, dan memanggil karakter untuk menghitung skor Anda.Burlesque - 28 byte
Cobalah online.
sumber
k , 18 byte
Cobalah online!
sumber
Perl 6 , 44 byte
Cobalah online!
Baik tua polymod .
sumber
Sekam , 9 byte
Cobalah online!
sumber