Angka iblis adalah bilangan bulat positif yang representasi desimalnya hanya terdiri dari 6. Daftar angka iblis dimulai dengan 6, 66, 666, 6666.
Diberikan bilangan bulat positif, hasilkan angka iblis terdekat. Jika ada dua, output yang lebih besar.
Testcases:
n output
1 6
2 6
3 6
6 6
35 6
36 66
37 66
100 66
365 66
366 666
666 666
999 666
Ini adalah kode-golf . Jawaban terpendek dalam byte menang.
code-golf
number
arithmetic
Biarawati Bocor
sumber
sumber
Jawaban:
Python 2, 28 byte
sumber
x=>'6'.repeat((''+-~(x*3/11)).length)
3.6666... = 11/3
.JavaScript (ES6),
3129 byteTampilkan cuplikan kode
“Itulah sebabnya, saya senang dengan kelemahan [...] Karena ketika saya lemah, maka saya kuat.”
sumber
Brachylog , 8 byte
Cobalah online!
Penjelasan
sumber
Java 7,
969366 bytePort of @orlp jawaban Python 2 yang luar biasa .
Coba di sini.
Saya kira hitungan 66 -bit saya juga iblis. ;)
(Bukan jawaban Java terpendek btw, lihat jawaban @JollyJoker sebagai gantinya.
sumber
"6"
seharusnya""
.Jelly , 9 byte
Tautan monadik.
Cobalah online! - Hampir tidak ada gunanya tautan ini (lihat di bawah)!
Bagaimana?
Dalam gaya pegolf sejati, ini benar-benar tidak efisien - ini memukul waktu 60-an di TIO untuk kasus uji 365 ! Secara lokal ini selesai dalam 37-an.
Sebuah tambalan untuk membuat algoritma yang sama berjalan dalam batas 60-an untuk 365 dan 366 pada TIO adalah untuk menghindari vektorisasi implisit dari
Ḍ
denganẆa6Ḍ€ạÐṂ⁸Ṫ
( coba itu ), namun ini sekarang akan seg-kesalahan untuk input 999 ( Triangle (999) hanya 499.500 tetapi masing-masing adalah daftar bilangan bulat, membuat total Tetrahedral (999) = 166.666.500 bilangan bulat, tidak efisien memori, setidaknya dalam Python).sumber
Jelly , 10 byte
Cobalah online!
sumber
‘×3:11Ṿ”6ṁ
untuk output string,‘×3:11D6ṁḌ
untuk integer.C, 118 byte
Coba Online
sumber
JavaScript (ES6), 41 byte
Uji kasus
Tampilkan cuplikan kode
sumber
Mathematica, 36 Bytes
Fungsi murni:
Penjelasan:
Iteratif membuat daftar panjang sama dengan input menggunakan
NestList
mengikuti pola6+10x(previous_value)
mulai dari nilai6
.Kemudian temukan nilai dalam daftar ini yang paling dekat dengan input.
Terakhir, ambil nilai maksimum dari daftar nilai terdekat.
Sementara panjang daftar sangat tidak efisien karena matematik dapat bekerja dengan angka panjang presisi yang sewenang-wenang, program ini hanya dibatasi oleh memori fisik.
sumber
Template Dianggap Berbahaya , 118 byte
Cobalah online!
Tidak Disatukan:
sumber
05AB1E ,
109 byte- 1 byte terima kasih kepada Riley
Cobalah online!
Kode di atas dapat memiliki masalah kinerja, ini adalah versi yang sedikit lebih efisien dengan 10 byte: alternatif TIO
Penjelasan
sumber
Mathematica, 76 byte
sumber
Neim ,
1210 byte (tidak bersaing)-1 byte terima kasih kepada steenbergh
Penjelasan:
Sayangnya,
𝕔
akan mengembalikan nilai yang lebih rendah dalam daftar jika dua angka memiliki perbedaan yang sama, jadi kami harus menambahkan 2 byte ke akun untuk itu.Non-bersaing sebagai
>
,<
danℝ
ditambahkan setelah pertanyaan ini diajukan (dan𝐥
diperbaiki untuk bekerja dengan angka, bukan hanya daftar)Catatan: Tidak akan berfungsi untuk angka dengan panjang sama dengan 19 atau lebih - karena terlalu besar untuk rindu Java untuk ditangani. (tapi ini nilai yang cukup besar, dan harus baik-baik saja)
Cobalah
sumber
Γ6Θℝ)
denganΓΘ𝐈Γ6)𝐣)
?Java 8, 37 byte
Pergi dengan contoh Kevin Cruijssen dan hanya mengembalikan sebuah String.
Lakukan trik * 3/11 untuk mendapatkan panjang yang tepat, lalu ganti semua dengan enam.
sumber
-~
bahwa saya harus melihat sepuluh kali di halaman ini jika saya memperhatikan ...QBIC ,
3727 byteAlih-alih menggunakan Maths ™, ini sekarang menggunakan manipulasi string untuk menemukan jeda di Demonic Domains (36, 366, ...). Terinspirasi oleh jawaban JS @ eush77.
Penjelasan
sumber
dc , 46 byte
Cobalah online!
sumber
C #, 142 byte
Ini menggunakan fakta, bahwa kita perlu melompat ke nomor deamonic berikutnya di setiap 36666 ... Dalam bentuk yang lebih mudah dibaca:
sumber
braingasm , 15 byte
Menggunakan aritmatika dari solusi Python orlp :
sumber
Saya tidak melihat pertanyaan ini di feed, dan hanya sengaja menemukannya. Inilah jawaban saya:
JavaScript (ES6), 34 byte
Tambahkan 1 byte untuk jawaban numerik. Awalnya berdasarkan jawaban ES7 ungolfed ini (37 byte, sudah numerik):
Menjengkelkan OP ingin 36 menjadi lebih dekat ke 66 dari 6. Penjelasan: 11/3 = 3.666 ..., jadi membaginya dengan skala ini adalah rentang 7..36, 37..366 dll untuk rentang 1..9.9, 10 ..99.9 dll. Ini dapat dipecahkan secara numerik murni dengan mengambil 2/3 dari yang kurang dari kekuatan 10 berikutnya yang lebih tinggi, meskipun itu golfier untuk memotong, dikonversi ke string, kemudian ubah semua karakter ke angka 6. (Meskipun masih bukan golf seperti jawaban rekursif yang benar-benar pintar.)
sumber
CJam, 25 byte
Tidak selambat pengiriman Jelly Jonathan Jonathan, tetapi membutuhkan memori O (n²) , di mana n adalah nomor input. Ya.
Ini sama dengan Python berikut:
Solusi alternatif, 12 byte
Ini adalah terjemahan dari algoritma orlp ke dalam CJam.
Penjelasan:
sumber
PHP, 49 Bytes
trim karakter 6
Cobalah online!
Alih-alih
trim($x=$argn+$i,6)>""
Anda dapat menggunakan solusi Regex!preg_match("#^6+$#",$x=$argn+$i)
+11 Bytes atau panjang string sama dengan menghitung6
perbandinganstrlen($x=$argn+$i)-strspn($x,6)
+10 Bytessumber
LOLCODE 1.4, 471 byte
Wow. Inilah yang Tidak Dijelaskan dan Dijelaskan:
Masih wow. Ini beberapa pseudojavascrython untuk Anda.
Masih belum mengerti? Program ini pada dasarnya hanya (tidak termasuk input 1-3) membandingkan input ke 3.6 * 10 ^ n, n menjadi panjang input. Jika lebih kecil dari angka itu, ia mencetak jumlah 6s yang kurang dari panjangnya. Jika lebih besar dari atau sama dengan angka itu, jumlah enam adalah panjang saat ini.
Akan senang membantu bermain golf!
sumber
Haxe, 70 byte
Input harus diteruskan sebagai tipe
Float
meskipun bilangan bulat, jika tidak Haxe akan mengeluh tentang mencoba membagi bilangan bulat (ya haxe akan menolak untuk mengkompilasi jika Anda membagi bilangan bulat dengan apa pun)Sama seperti semua jawaban lainnya. Kalikan dengan 3, bagi dengan 11, cetak 1
6
untuk setiap digit.sumber
Brainfuck, 315 byte
Jalankan di sini . Pilih ukuran sel yang dapat menangani nilai 3 * (n + 1), jadi agar semua kasus uji berfungsi, pilih 16. Dinamis (tak terbatas) Memori harus dihidupkan agar ini berfungsi. Ini memungkinkan pita memanjang ke kiri. Untuk memasukkan bilangan bulat, ketikkan input seperti
\366
untuk n = 366.Tidak Disatukan:
Menggunakan algoritma yang sama dengan solusi ini . Algoritma yang digunakan untuk setiap langkah individual diambil dari halaman ini . Semua algoritma yang digunakan adalah non-pembungkus, sehingga program tidak akan rusak untuk input yang lebih besar.
sumber
n=n*3
bisa golf seperti itu[->+++<]
? Dan algoritma divmod untuk membagi dengan 10?05AB1E , 7 byte
Cobalah online!
sumber
Japt , 9 byte
Cobalah
sumber
C #, 102 byte
Agak kecewa dengan panjangnya ini, bisa melakukan hal yang persis sama dengan jawaban yang lebih pendek di Jawa tetapi saya tidak benar-benar memahaminya karena saya adalah pengembang .NET yang malas, bodoh :)
sumber