Dada uma entrada de número inteiro não negativo, escrever um programa que converte o número de hexadecimal e retorna um valor truthy se a forma hexadecimal do número contém apenas os caracteres A
através F
e um valor Falsey contrário.
Casos de teste
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)
Bônus: -40 bytes se o seu programa imprimir Only letters
para o desafio descrito acima, Only numbers
se a versão hexadecimal do número contiver apenas os dígitos 0-9
e Mix
se o número hexadecimal contiver pelo menos um número e pelo menos uma letra.
Isso é código de golfe. Aplicam-se regras padrão. O menor código em bytes vence. São permitidas funções ou programas completos.
code-golf
number
base-conversion
hexadecimal
Arcturus
fonte
fonte
NaN
MixOnlynumbersletters
é de 21 caracteresRespostas:
Pitão, 43 - 40 = 3 bytes
Suíte de teste
Isso alcança o bônus.
Only numbers
eOnly letters
felizmente diferem apenas por 4 letras. A formatação no estilo printf é usada com%
.O sistema de seleção é realizado através da interseção do hexágono com
G
o alfabeto e da subtraçãoG
. Se nenhum deles acaba sendo falso, é uma mistura, enquanto se o cruzamento é falso, são números, e se a subtração é falso, são letras.fonte
Pitão, 6 bytes
Teste aqui
fonte
Gelatina , 6 bytes
Experimente online!
Como funciona
fonte
TeaScript , 11 bytes
13 15 16Bem simples. Isso usa o TeaScript 2.0. Você pode obter esta versão no Github
Explicação
Experimente online (versão ligeiramente modificada que funciona na web)
fonte
Python, 24 bytes
Converte a entrada em uma sequência hexadecimal (sem
0x
prefixo)'%x'%n
. Vê se todos os caracteres são maiores que'9'
(quais letras são), verificando se o valormin
está acima'9'
.fonte
'9'
é 54. Portanto, se você pode escrever,...>54
pode salvar um byte.MATL , 10
Exemplos
Explicação
Desafio de bônus: 53−40 = 13
Exemplos
Explicação
fonte
LabVIEW, 52-40 = 12 Primitivas do LabVIEW
Elogie os built-ins!
fonte
C,
464337 bytesAgora com mais recursão! (Obrigado Dennis):
Bônus: ainda mais curto (33 bytes), mas falha em
x = 0
:F()
recebe umint
e retorna0
(falso) ou diferente de zero (verdadeiro).Eu nem tentei obter o bônus,
"MixOnly lettersnumbers"
ocupa 23 bytes sozinho, rastrear a nova condição exigiria 9 bytes adicionais,printf()
é 8 bytes, o que totaliza 40, anulando o esforço.Teste principal:
fonte
?:
? Eu tive que substituí-||
lo por para compilar. Além disso, você pode salvar um byte substituindo o*
com&
por evitando os()
s à esquerda (embora você precise adicionar um espaço)?a?:b
é uma extensão GNU que avaliaa
sea
é um valor verdadeiro, caso contrário, parab
. É útil para lidar com ponteiros nulos comosend(message ?: "(no message)");
. Eu sei que não é portátil, mas a portabilidade de código nunca é uma preocupação no golfe código :)33
bytes fazendo isso:F(x){x=(x%16>9)*(x<16?:F(x/16));}
isso abusa de um bug (GCC) em que se não houver variável de retorno em uma função e o argumento principal foi definido, ele retornará automaticamente o argumento principal em alguns casos ( com base em que lógica foi feita), e esse é um desses casos! Experimente on-line: bit.ly/2pR52UHPython 3,
3029 bytes1 byte removido graças ao sysreq e Python 3.
Simples
lambda
e fatiado.fonte
Perl 6 , 18 bytes
uso:
fonte
Mathematica, 32 bytes
Explicação:
fonte
Javascript, ES6, sem regexp, 28 bytes
Há também essa versão de 27 bytes, mas ela retorna o valor inverso.
fonte
F=n=>!n||n%16>9&F(n>>4)
F=n=>n%16>9&&n<16|F(n>>4)
então.||
, mas acho que você pode se safar de usar em&
vez de&&
nesse caso.Julia, 18 bytes
Esta é uma função anônima que aceita um número inteiro e retorna um booleano. Para chamá-lo, dê um nome, por exemplo
f=n->...
.A entrada é convertida em uma cadeia hexadecimal usando
hex
, então verificamos se é totalmente composto por caracteres alfabéticos usandoisalpha
.fonte
JavaScript ES6, 29
Nenhum bônus
Com o novo valor de -40, o bônus está mais próximo agora ... mas não o suficiente. Escore de bônus 70
71- 40 => 3031Snippet de teste (digite um número dentro da caixa de entrada)
fonte
-n-1
=~n
certo?~n == -1
enquanto-n-1 == NaN
GS2 , 6 bytes
O código fonte usa a codificação CP437. Experimente online!
Como funciona
fonte
Oitava, 22 bytes
fonte
Java,
464438 bytesLinha simples bastante simples que converte o número inteiro em uma sequência hexadecimal e usa regex para determinar se todos os caracteres são letras.
-2 bytes graças a @ Eng.Fouad.
fonte
"[a-f]+"
economizaria 2 bytes.+
–é um desperdício de bytes.matches
retorna true se a string inteira puder ser correspondida pelo regex especificado.[a-f]
sem o sinal de adição está incorreto, pois não corresponde à cadeia inteira, pois contém mais de um caractere; seria se e somente se um caractere válido estiver presente.CJam (
98 bytes)Demonstração online
fonte
{Gb$N<!}
Ruby, 19 bytes
Ungolfed:
Uso:
Com bônus, 70 - 40 = 30 bytes
Uso:
fonte
'%x'%n!~/\d/
é uma verificação mais curto para solução de um e dois solução tem uma contagem de matéria-byte de 70, não 75.Perl, 69 - 40 = 29 bytes
fonte
Ceilão, 55 bytes
Direto ... formamos
n
como um número hexadecimal (que produz uma string), chamamos para cada caractere dessa string o.digit
número (que retorna verdadeiro se for um dígito), depois verificamos se algum deles é verdadeiro, e negamos isso.A versão com bônus tem uma pontuação muito maior de 119 - 25 = 94 :
Não tenho certeza de como alguém poderia fazer uma versão bônus curta o suficiente para ser melhor que a versão sem bônus, mesmo aquelas cordas sozinhas têm comprimento 28 juntas. Talvez uma linguagem que dificulte a produção de um valor de verdade / falsey.
Aqui está uma versão formatada:
fonte
Ferrugem, 70 bytes
Porque, você sabe,
JavaRust.Na verdade, é bastante elegante:
Mas é uma pena que o clichê de definição de função seja tão longo ....: P
fonte
CJam, 44 bytes - 40 bônus = 4 bytes
Experimente aqui ~
fonte
Sério, 12 bytes
Hex Dump:
Experimente Online
É o mesmo que as outras respostas no idioma da pilha. Seria apenas 7 bytes se a subtração de seqüência seriamente suportada.
Edição: agora seriamente suporta subtração de seqüência de caracteres e a seguinte solução de 7 bytes agora funciona:
Hex Dump:
Experimente Online
fonte
4╙,¡#S;ú∩S=
(ou4ª
ou8τ
, muitas maneiras de soletrar:16:
em dois bytes: P)05AB1E , 2 bytes (não concorrente)
Código:
Ha! Isso são dois bytes! Infelizmente, não concorre porque esse idioma adia o desafio :(
Explicação:
Experimente online! ou Verifique todos os casos de teste!
fonte
hdÔ©1åi•4?ŸâτΛ•}®0åi•4?ŸàpÕTà•}®g2Qi•²
•} 36B` pelo bônus que resulta em ... mais 6! Wooooo bônus!Python 3, 28 bytes
fonte
Lisp comum, 40 bytes
Experimente online!
fonte
SmileBASIC 3.2.1, 78 bytes
fonte
81
.0-127
, portanto, sua contagem de bytes é81
.Japonês, 12 bytes
Experimente online!
Como funciona
fonte
!!UsG r"\\d
pode funcionar e salvar um byteGema, 41 caracteres
Como não existe booleano no Gema, ele simplesmente gera "t" ou "f".
Exemplo de execução:
fonte