Angka yang menyenangkan (menurut definisi ini) adalah angka yang dapat dilewati melalui proses berikut (mari kita gunakan 41802000
sebagai contoh):
- Pisahkan angka identik yang tertinggal (
41802000 => [41802, 000]
) - Sortir bagian pertama dari digit dan ambil maksimum (
[41802, 000] => [8, 000]
) - Ambil panjang elemen terakhir. Panggil elemen yang dihasilkan A dan B (
[8, 000] => A=8, B=3
) - Apakah N B = A untuk bilangan bulat apa pun
N
? (True
dalam contoh ini; 2 3 = 8)
Jika input dihasilkan True
dari proses berikut ini, itu dianggap menyenangkan.
Tugas Anda adalah mengambil bilangan bulat x
, dan menampilkan apakah x
angka yang menyenangkan. Anda dapat menampilkan dua nilai berbeda untuk truey and falsey, tetapi sebutkan apa yang Anda gunakan dalam jawaban Anda. x
dijamin memiliki setidaknya dua digit berbeda (mis. 111
input tidak valid). Seperti kebanyakan tantangan, Anda dapat menggunakan x
string, atau daftar digit.
Ini adalah kode-golf sehingga kode terpendek dalam byte menang.
Uji kasus
Input Output
41802000 1
100 1
123456788 0
451111111 0
234543454545444 0
12 1
41902000 0
92599 1
code-golf
math
decision-problem
caird coinheringaahing
sumber
sumber
list of digits
- ini akan menjadi daftar karakter angka ASCII, atau daftar bilangan bulat dari 0-9Jawaban:
APL (Dyalog) , 36 byte
Cobalah online!
Bagaimana?
Hampir sebuah puisi.
⌽⍵
- balikkan input sekali,1,2=/
- dapatkan daftar perbedaan.⌊\
- simpan hanya grup yang pertama,⌽
- dan balikkan untuk menyelesaikan.o←
- ditugaskan keo
,~o
- beralih satu dan nol,⍵/⍨
- saring input dengan itu,⍎¨
- ubah hasilnya menjadi daftar setiap digit,⌈/
- dan dapatkan yang maksimal. (itu A)⍵/⍨o
- filter input dengano
unalt (ered),≢
- dan mengambil panjangnya, itu akan menjadi B.÷
- dapatkan satu dibagi dengan hasil ini,*
- dan bawa A ke kekuatanmu itu.⊢≡⌊
- bilangan bulat?sumber
05AB1E , 11 byte
Cobalah online!
Penjelasan
Emigna menyimpan 1 byte.
Bergantung pada fakta bahwa jika A adalah bilangan bulat positif N dinaikkan ke kekuatan B , maka N = A 1 / B , maka itu harus bilangan bulat.
sumber
UZX
harus bekerja alih-alihs{θs
41902000
(harus palsu).418802000
Haskell ,
85757271 byteEdit : -10 byte dengan mengambil daftar digit alih-alih string. Terima kasih kepada WhatToDo untuk menunjukkan bahwa ini dibolehkan. -3 byte berkat solusi Ourous 'di Clean . -1 byte terima kasih kepada pengguna28667 .
Cobalah online! Mengambil input sebagai daftar digit. Contoh penggunaan:
f [4,1,8,0,2,0,0,0]
hasilTrue
.Penjelasan:
Diberi masukan
s=[4,1,8,0,2,0,0,0]
, kamireverse
daftar dan memisahkan unsur-unsur terkemuka denganspan(==last s)
:([0,0,0],[2,0,8,1,4])
. Pola yang cocok pada(b,a)
hasilb=[0,0,0]
dana=[2,0,8,1,4]
.Daftar pemahaman
or[n^length b==maximum a|n<-[1..a]]
memeriksa apakah setiap bilangan bulatn
dalam kisaran1
untuk9
memenuhin^length b==maximum a
, yaitun^3=8
.sumber
a
akan gagal dalam kasus seperti477
.b
, tetapi memeriksa setiap integern
dari0
ke9
(sebelumnya dari0
kea
). Itu persis spesifikasi sejauh yang saya lihat.Haskell ,
10489 bytes@Laikoni menemukan solusi yang lebih pendek , tetapi ini adalah yang terbaik yang bisa saya lakukan. Terima kasih @Laikoni karena memberi tahu saya bahwa kami juga dapat menerima daftar digit sebagai input.
Penjelasan:
Cobalah online!
sumber
any(==a)
saat Anda bisa menggunakannyaelem a
?2888
?head.maximum
masih lebih pendek darimaximum.concat
2 byte, dan mempertahankan fungsinya.R , 80 byte
Cobalah online!
Penggunaan
utf8ToInt - 48
untuk membagi angka menjadi angka. Ini melempar peringatan dari konversi ke string.Menggunakan rle, hitung jumlah trailing digit dan nilai maksimum digit pertama. Mengembalikan nilai true jika salah satu dari kisaran 0 hingga nilai maksimal ke pangkat trailing count sama dengan nilai maks.
Saya pikir ada peluang golf lebih lanjut, tetapi itu bisa menunggu sampai besok.
sumber
function(x,R=rle(rev(utf8ToInt(x)-48)))!max(R$v[-1])^(1/R$l[1])%%1
(66 byte,x
sebagai string)Jelly , 11 byte
Mengambil input sebagai daftar digit.
Cobalah online!
Bagaimana itu bekerja
sumber
R, 66 byte
Jawaban ini kurang lebih merupakan campuran jawaban MickyT dan NofP , dan atas permintaan mereka, ini dia:
Dibutuhkan x sebagai string.
sumber
JavaScript (ES7), 66 byte
Mengambil input sebagai string atau array karakter. Mengembalikan boolean.
Uji kasus
Tampilkan cuplikan kode
sumber
Bersih ,
13012811893 byteMenentukan fungsi
@
, mengambil daftar angka integer.Cobalah online!
sumber
Python 2 ,
9578 byteCobalah online!
sumber
i
Anda dapat menjatuhkanlen
mencapai 78 byteR , 93 byte
Cobalah online!
Kode mengambil integer sebagai input dan mengembalikan FALSE jika nomornya menyenangkan, dan BENAR sebaliknya.
sumber
Python 3 ,
8885 byteTidak Disatukan:
True
atauFalse
.a ** (1 / b)
mati oleh sedikitnya 0,5 dari b √a yang membutuhkan nilai di atas 2 53 (atau apa pun floating point radix dan mantissa panjang Python yang akan digunakan, lihatsys.float_info
).sumber
int
danrange
. (Pada titik tertentu, akan menjadi lebih layak untuk memperkirakan rentang pencarian berdasarkan padaa^(1/b)
daripada menghitung sejumlah besar kekuatan.)C (gcc) ,
144126117 byteCobalah online!
sumber
Ruby , 64 byte
Input sebagai string, mengembalikan true jika:
Cobalah online!
sumber
Perl 6 , 55 byte
Cobalah online!
Setelah evaluasi regex awal - yang hanya dapat berhasil jika inputnya adalah bilangan bulat positif -
$0
berisi bagian awal angka, dan$1
berisi trailing digit berulang.The
comb
metode tanpa argumen, diterapkan ke string, mengembalikan daftar karakter, yang dalam mengevaluasi konteks numerik dengan panjang daftar. Jadi$0.comb.max
adalah digit terbesar dalam awalan, dan$1.comb
merupakan panjang akhiran.Kami kemudian memeriksa apakah
any(^10)
(yaitu, atau-persimpangan angka dari 0-9), ketika dinaikkan ke kekuatan panjang akhiran, sama dengan digit terbesar dalam awalan. Theso
kekuatan evaluasi boolean dari persimpangan yang dihasilkan, yang tidak akan baik-baik saja sendiri sebagai nilai truthy, tetapi panggilan tantangan untuk hanya dua nilai yang berbeda untuk dikembalikan.sumber
.
sebagai gantinya\d
.Kotlin , 106 byte
Output: benar / salah
Cobalah online!
sumber
Tambahkan ++ , 21 byte
Cobalah online!
Sudah 3 setengah bulan, saya harap saya tidak ninja siapa pun.
sumber
C # (.NET Core) , 132 byte
Cobalah online!
Ucapan Terima Kasih
-12 byte terima kasih kepada @KevinCruijssen
DeGolfed
sumber
i=n.Length-2;for(;i>=0;i--)
bisa bermain golfi=n.Length-1;for(;i-->0;)
dan&&
bisa bermain golf&
.using System;
dan menggunakanSystem.Math.Pow
langsung.-48
ini dapat golf untuk -3 byte.Japt ,
2618 byteCobalah online!
Mengambil input sebagai string, mengembalikan
1
untuk angka menyenangkan,0
jika tidak.Penjelasan singkat:
Ambil input pertama dan bagi dengan nilai
(x,y) => x===y
yang benar. Misalnya'41802000'
untuk['4','1','8','0','2','000']
.Ambil array dari langkah pertama, menghapus elemen terakhir dan panjangnya, menghasilkan B .
Temukan elemen terbesar di array yang tersisa, menghasilkan A , bawa ke kekuasaan
1/B
dan kemudian kembali jika hasilnya dapat dibagi oleh satu.Pertama kali bekerja dengan Japt, sangat terbuka untuk semua rekomendasi.
Dicukur 8 byte berkat produk ETH .
sumber
ó¶
. 2) Tidak yakin mengapa Anda memilikiv
di baris kedua, karena hanya mengubah string menjadi huruf kecil dan tidak berpengaruh pada panjang ;-) 3) Anda dapat menghindari!(U
pada baris terakhir dengan mengubah%1
kev1
, yang kembali1
jika subjek habis dibagi 1 atau0
sebaliknya.Clojure, 168 byte
Cobalah online!
sumber
Arang , 33 byte
Cobalah online! Tautan adalah untuk mengucapkan versi kode. Output a
-
untuk angka yang menyenangkan. Penjelasan:Membagi input
q
menjadi karakter.Hapus karakter terakhir dari
q
dan dorong keu
(sudah ditentukan ke daftar kosong).Ulangi dan tekan berulang kali saat karakter terakhir
q
adalah karakter pertamau
.Ambil digit maksimum
q
dan naikkan ke kekuatan timbal balik dari panjangu
, lalu periksa apakah hasilnya bilangan bulat.sumber
Python 2 ,
9185 byteCobalah online!
sumber
Perl 5 , 73 +1 (
-p
) = 74 byteCobalah online!
sumber
Java 8, 125 byte
Pelabuhan @ Ayb4btu 's C # .NET jawaban .
Cobalah online.
Penjelasan:
sumber
Pip ,
322221 bytePenggunaan
1
untuk falsey dan0
untuk kebenaran , menghemat satu byte. Cobalah online!sumber
Pyth, 29 byte
Suite uji
Terjemahan Python 3:sumber