Diberikan input integer non-negatif, tulis sebuah program yang mengubah angka menjadi heksadesimal dan mengembalikan nilai kebenaran jika bentuk heksadesimal dari angka hanya berisi karakter A
melalui F
dan nilai falsey sebaliknya.
Uji kasus
10
==> True (A in hexadecimal)
100
==> False (64 in hexadecimal)
161
==> False (A1 in hexadecimal)
11259375
==> True (ABCDEF in hexadecimal)
0
==> False (0 in hexadecimal)
Bonus: -40 byte jika program Anda mencetak Only letters
untuk tantangan yang dijelaskan di atas, Only numbers
jika versi heksadesimal dari angka hanya berisi digit 0-9
dan Mix
jika angka heksadesimal mengandung setidaknya satu angka dan setidaknya satu huruf.
Ini kode golf. Aturan standar berlaku. Kode terpendek dalam byte menang. Fungsi atau program lengkap diizinkan.
code-golf
number
base-conversion
hexadecimal
Arcturus
sumber
sumber
NaN
MixOnlynumbersletters
adalah 21 karakterJawaban:
Pyth, 43 - 40 = 3 byte
Suite uji
Ini mencapai bonus.
Only numbers
danOnly letters
untungnya hanya berbeda 4 huruf. format gaya printf digunakan dengan%
.Sistem seleksi dilakukan dengan mengambil persimpangan hex dengan
G
, alfabet, dan mengurangiG
. Jika tidak ada yang salah, itu campuran, sedangkan jika persimpangan adalah palsu, itu angka, dan jika pengurangannya salah, itu adalah huruf.sumber
Pyth, 6 byte
Uji di sini
sumber
Jelly , 6 byte
Cobalah online!
Bagaimana itu bekerja
sumber
TeaScript , 11 byte
13 15 16Cukup mudah. Ini menggunakan TeaScript 2.0. Anda bisa mendapatkan versi ini dari Github
Penjelasan
Cobalah online (versi yang sedikit dimodifikasi yang berfungsi di web)
sumber
Python, 24 byte
Mengonversi input dengan string hex (tanpa
0x
awalan) dengan'%x'%n
. Melihat apakah semua karakternya lebih besar dari'9'
(huruf mana) dengan melihat apakah dimin
atas'9'
.sumber
'9'
adalah 54. Jadi, jika Anda dapat menulis,...>54
Anda dapat menyimpan byte.MATL , 10
Contohnya
Penjelasan
Tantangan bonus: 53−40 = 13
Contohnya
Penjelasan
sumber
LabVIEW, 52-40 = 12 Primview LabVIEW
Puji built-in!
sumber
C,
464337 byteSekarang dengan rekursi lebih banyak! (Terima kasih Dennis):
Bonus: lebih pendek (33 byte), tetapi gagal untuk
x = 0
:F()
mengambil aint
dan mengembalikan salah0
(false) atau non-zero (true).Saya bahkan tidak mencoba untuk mencapai bonus,
"MixOnly lettersnumbers"
membutuhkan 23 byte saja, melacak kondisi baru akan membutuhkan 9 byte tambahan,printf()
adalah 8 byte, yang menambahkan hingga 40, membatalkan upaya.Tes utama:
sumber
?:
? Saya harus menggantinya dengan||
untuk membuatnya dikompilasi. Juga, dapatkah Anda menyimpan byte dengan mengganti*
dengan&
sehingga menghindari()
s di sebelah kiri (meskipun Anda kemudian harus menambahkan spasi)?a?:b
adalah ekstensi GNU yang mengevaluasia
apakaha
adalah nilai yang sebenarnya, atau sebaliknyab
. Berguna untuk menangani null pointer sukasend(message ?: "(no message)");
. Saya tahu ini tidak portabel, tetapi portabilitas kode tidak pernah menjadi perhatian dalam kode golf :)33
byte dengan melakukan ini:F(x){x=(x%16>9)*(x<16?:F(x/16));}
ini menyalahgunakan (GCC) bug di mana jika tidak ada variabel pengembalian dalam suatu fungsi dan argumen utama ditetapkan, itu akan kembali otomatis argumen-utama dalam beberapa kasus ( berdasarkan logika apa yang dilakukan), dan ini merupakan salah satu dari kasus-kasus itu! Cobalah secara online: bit.ly/2pR52UHPython 3,
3029 byte1 byte dilucuti berkat sysreq dan Python 3.
Sederhana
lambda
dan mengiris.sumber
Perl 6 , 18 byte
pemakaian:
sumber
Mathematica, 32 byte
Penjelasan:
sumber
Javascript, ES6, tanpa regexp, 28 byte
Ada juga versi 27-byte ini tetapi mengembalikan nilai terbalik.
sumber
F=n=>!n||n%16>9&F(n>>4)
F=n=>n%16>9&&n<16|F(n>>4)
.||
, tapi saya pikir Anda bisa lolos dengan menggunakan&
bukannya&&
dalam kasus itu.Julia, 18 byte
Ini adalah fungsi anonim yang menerima integer dan mengembalikan boolean. Untuk menyebutnya, berikan nama, mis
f=n->...
.Input dikonversi ke string heksadesimal menggunakan
hex
, kemudian kami memeriksa apakah seluruhnya terdiri dari karakter alfabet menggunakanisalpha
.sumber
JavaScript ES6, 29
Tidak ada bonus
Dengan nilai baru -40 bonus lebih dekat sekarang ... tetapi tidak cukup. Skor bonus 70
71- 40 => 3031Cuplikan uji (ketikkan angka di dalam kotak input)
sumber
-n-1
=~n
benar?~n == -1
sementara-n-1 == NaN
GS2 , 6 byte
Kode sumber menggunakan pengkodean CP437. Cobalah online!
Bagaimana itu bekerja
sumber
Oktaf, 22 byte
sumber
Java,
464438 byteCukup sederhana satu-liner yang mengubah bilangan bulat menjadi string heksadesimal dan menggunakan regex untuk menentukan apakah semua karakter adalah huruf.
-2 byte terima kasih kepada @ Eng.Fouad.
sumber
"[a-f]+"
akan menghemat 2 byte.+
-itu ini buang-buang byte.matches
mengembalikan true jika seluruh string dapat dicocokkan dengan regex yang diberikan.[a-f]
tanpa tanda tambah tidak benar karena tidak cocok dengan keseluruhan string karena mengandung lebih dari satu karakter; itu akan jika dan hanya jika satu karakter yang valid ada.CJam (
98 bytes)Demo online
sumber
{Gb$N<!}
Ruby, 19 byte
Tidak Disatukan:
Pemakaian:
Dengan bonus, 70 - 40 = 30 byte
Pemakaian:
sumber
'%x'%n!~/\d/
pemeriksaan yang lebih pendek untuk solusi satu, dan solusi dua memiliki jumlah byte mentah 70, bukan 75.Perl, 69 - 40 = 29 byte
sumber
Ceylon, 55 byte
Terus terang ... kita memformat
n
sebagai angka heksadesimal (yang menghasilkan string), memanggil setiap karakter dari string itu.digit
nomor (yang mengembalikan true jika itu angka), lalu memeriksa apakah ada di antara mereka yang benar, kemudian negasikan ini.Versi dengan bonus memiliki skor jauh lebih tinggi dari 119 - 25 = 94 :
Saya tidak yakin bagaimana orang bisa membuat versi bonus cukup pendek untuk menjadi lebih baik daripada versi tanpa-bonus, bahkan string itu sendiri memiliki panjang 28 bersama. Mungkin bahasa yang membuatnya sangat sulit untuk menghasilkan nilai kebenaran / kepalsuan.
Ini adalah versi yang diformat:
sumber
Karat, 70 byte
Karena, Anda tahu,
JavaRust.Ini sebenarnya cukup elegan, meskipun:
Tapi sayang sekali definisi fungsi boilerplate begitu lama ....: P
sumber
CJam, 44 byte - 40 bonus = 4 byte
Coba di sini ~
sumber
Serius, 12 byte
Hex Dump:
Cobalah secara Online
Ini sama dengan jawaban bahasa stack lainnya. Ini akan menjadi hanya 7 byte jika Serius mendukung pengurangan string yang belum.
EDIT: Serius sekarang mendukung pengurangan string dan solusi 7 byte berikut sekarang berfungsi:
Hex Dump:
Cobalah secara Online
sumber
4╙,¡#S;ú∩S=
(atau4ª
atau8τ
, banyak cara mengeja:16:
dalam dua byte: P)05AB1E , 2 byte (tidak bersaing)
Kode:
Ha! Itu dua byte! Sayangnya tidak bersaing karena bahasa ini memposting tantangan :(
Penjelasan:
Cobalah online! atau Verifikasi semua kasus uji!
sumber
hdÔ©1åi•4?ŸâτΛ•}®0åi•4?ŸàpÕTà•}®g2Qi•²
•} 36B` untuk bonus yang menghasilkan ... 6 lagi! Bonus Wooooo!Python 3, 28 byte
sumber
Gangguan Umum, 40 byte
Cobalah online!
sumber
SmileBASIC 3.2.1, 78 byte
sumber
81
.0-127
, dengan demikian jumlah byte Anda81
.Japt, 12 byte
Cobalah online!
Bagaimana itu bekerja
sumber
!!UsG r"\\d
mungkin bekerja dan menyimpan byteGema, 41 karakter
Tidak ada boolean di Gema, jadi hanya menampilkan "t" atau "f".
Contoh dijalankan:
sumber