Recentemente, você fez uma conta em um site de apostas desonesto, onde por uma taxa de 25 dólares, eles pagarão uma quantia aleatória entre 0 e 50 dólares. Depois de receber cerca de 5 dólares duas vezes, você decide provar que o site é uma farsa. Depois de acessar o firewall externo com a senha padrão, você encontra o caminho para o servidor de banco de dados e descobre onde os valores dos valores mínimo e máximo são mantidos. Você decide conectar 25 '9's como o valor máximo, mas recebe uma mensagem de erro informando que o valor máximo deve ser do tipo' uint64 '. No entanto, agora você percebe que algumas teclas numéricas parecem não digitar corretamente no console remoto. O desafio aparece diante de você quase como se estivesse digitado em um site de perguntas e respostas.
usando apenas os programas convenientemente instalados para testar e executar seu idioma específico, gera o tamanho máximo de um valor inteiro não assinado de 64 bits; no entanto, quase tudo, exceto as ferramentas de programação, estão quebradas nesta máquina, deixando você sem o uso dos números 1, 2,4,6,8 - no código fonte ou nos literais, você também percebe que parece levar um tempo exponencialmente maior para executar o programa para cada pedaço adicional de código, portanto é melhor mantê-lo curto se quer ficar rico antes do desenho!
O desafio
Escreva um programa que emita 18446744073709551615, o valor máximo de um número inteiro de 64 bits não assinado, como um número ou uma única sequência.
Seu código-fonte não pode conter nenhum dos caracteres '1', '2', '4', '6' ou '8'
se o seu idioma não tiver um número inteiro de 64 bits ou equivalente não assinado, a saída poderá estar no formato de sequência ou não, mas deve ser o número acima.
esse é o código-golfe, então o código mais curto em cada idioma vence!
Respostas:
Cera de abelha , 3 bytes
Explicação:
Experimente online!
Essa linguagem é perfeita para esse desafio.
Aqui está um extrato da página Esolang na cera de abelha :
Isso é basicamente longos não assinados.
EDIT: Eu ainda estou esperando Dennis me superar com uma solução de 2 bytes.
fonte
C, 26 bytes
Imprime um
unsigned long
valor.Requer o tamanho de
long
64 bits.fonte
print~0
.~0l
Deveria trabalhar.sizeof(long) * CHAR_BIT == 64
. Uma suposição razoável para o golfe, mas vale a pena destacar.CJam (4 bytes)
Demonstração online
Isso calcula 16 16 - 1 usando builtin
G
para 16 e o operador de decremento(
.fonte
Lisp comum SBCL de 64 bits, 18 bytes
most-positive-word
A palavra mais positiva no compilador de 64 bits é 64uint. É alguma coisa.
fonte
Python3 REPL, 12 bytes
No REPL:
~-(~-3<<9*7)
Fora do REPL:
print~-(~-3<<9*7)
<--> Python2!Aqui está mais um aos 17 bytes:
~-(~-3<<ord("?"))
.Explicação
Nada super chique. Aqui está dividido:
A expressão resultante é aproximadamente (mas não exatamente)
~-(2<<63)
->(2**64)-1
. Eu uso o operador girino duas vezes aqui. Uma dica de golfe está aqui .Também existe
sys.maxint
no Python2 que pode ser usado, mas não vou olhar para isso.repl.it <- link de teste.
fonte
~-(~
parte está nos olhos do primeiro gato? Não consigo ver bem o segundo gato ...bc,
1513 bytesEconomizou 2 bytes graças ao manatwork.
Nada extravagante, apenas (16 ^ 16) -1.
fonte
(a=9+7)^a-3/3
dc , 7 bytes
Acho que é permitido que os idiomas baseados em pilha deixem a resposta na célula superior da pilha, semelhante a um valor de retorno para funções. Se for necessária uma impressão explícita, adicione
p
no final do código.Experimente online!
Ele calcula (2 64 - 1) usando vários truques:
2
é dado como o número de dígitos (Z
) encontrado no número inteiro 10 (A
)64
é dado como5E
. Por padrão, dc usa 10 como a raiz de entrada. Mesmo assim, ele pode aceitar números em notação hexadecimal, mas eles serão convertidos de maneira diferente do que você esperaria. Exemplo: (5E) padrão = (5E) (raiz de entrada = 10) = (5 * 10 1 ) + (14 (E) * 10 0 ) = 50 + 14 = 641
é dado como a profundidade da pilha (z
), uma vez que apenas (2 64 ) estava presenteHistória alternativa:
Solução em dc: computing (16 16 - 1), ainda 7 bytes!
Experimente online!
fonte
Gelatina , 4 bytes
Experimente online!
Explicação
fonte
05AB1E , 4 bytes
Explicação:
Finalmente! Uma chance de usar
05AB1E
os componentes internos para poderes de dois!Experimente online!
Outra resposta de 4 bytes:
Explicação:
Experimente online!
(se alguém estiver se perguntando, essa pergunta é anterior a todas as outras respostas de 4 bytes)
fonte
64o<
mas ainda não a encontrei. Algo como'@Ço<
um push criativo de 64 ... Se você conseguir empurrar 64 com 1 byte, poderá obter 3 é o ponto que estou tentando enfatizar.MATLAB / oitava, 5 bytes
A @Sanchises postou uma excelente resposta do MATLAB, no entanto, essa é uma abordagem consideravelmente diferente, então eu a postarei de qualquer maneira:
No MATLAB,
tic
retorna o número de milissegundos passado desde que o programa foi aberto. Crucialmente, o valor que ele retorna é umuint64
tipo. Issouint64
evita a necessidade de converter um número para o tipo padrão de MATLABsdouble
.Qualquer número dividido por 0 no MATLAB é considerado infinito, o que, para tipos de ponto não flutuante, MATLAB representa isso como o valor inteiro máximo para esse tipo.
Isso também funciona com o Octave, mas dependendo do intérprete usado, ele também pode emitir um aviso de "divisão por zero". Você pode tentar o código online aqui, porém, como eu digo, você recebe um aviso / 0 que não aparece no MATLAB.
fonte
tic==0
na inicialização) #bc ,
18, 16 bytesfonte
-3/3
obter-1
?PHP, 16 bytes
Isso é muito parecido com a resposta do Ven: https://codegolf.stackexchange.com/a/110751/38505
https://repl.it/Frcy/0
fonte
bash
demasiado:printf %u $[~0]
.~0
é-1
, que é1111111111111111111111111111111111111111111111111111111111111111
binário, em 64 bits, comparado a11111111111111111111111111111111
32 bits, e os números dependem da plataforma.MATLAB / oitava, 22 bytes
Experimente online!
eye
é usado para criar uma matriz unitária (matriz1
na diagonal, zero caso contrário). Sem argumentos, isso cria uma1x1
matriz unitária ou, em outras palavras, apenas a1
. É necessário um argumento opcional, que é o tipo de dados ('classe' na terminologia MATLAB) da matriz criada. Assim, pedimos uma1
classeuint64
e dividimos por zero, o que resultaInf
em MATLAB, que é cortado emintmax('uint64')
.O vetor é
['~rw}?='-9 '']
avaliado como'uint64'
. Concatenar um caractere vazio para um vetor é 1 byte menor que o usochar('~rw}?='-9)
.Raciocínio em relação a esta resposta: o built-in
intmax
infelizmente avalia até o máximo de um número inteiro assinado de 32 bits. A próxima opção óbvia éuint64()
, que contém os caracteres proibidos. A alternativa é usar uma função que aceita uma string como um tipo de dados. Os candidatos óbvios sãointmax
ecast
, mas as alternativas incluemzeros
,ones
eeye
.Nota: O MATLAB é instalado por padrão em praticamente todos os sites de apostas desonestos.
fonte
JavaScript,
39383332 bytesEditar: salvou 5 bytes graças a @Arnauld.
fonte
Java 8, 30 bytes
Teste on-line
fonte
1846
.BF, 108 bytes
Se cada comando for considerado como 3 bits, isso é potencialmente 41 bytes.
fonte
+-<>[].,
Retina ,
2827 bytesGuardado 1 byte graças a Kritixi Lithos
Experimente online!
Explicação
Substitui a entrada inexistente / vazia por esta sequência. Essa seqüência específica foi gerada pelo "inverso" deste programa. Ele codifica
a
através dej
como0
através9
, respectivamente.Este é um
T
estágio de ransliteração. Os conjuntos de caracteresl
ed
são usados para transliteração.l
representa o alfabeto em minúsculas,d
é todos os dígitos. Então, ele mapeia deabcdefghij
volta para0123456789
.fonte
d
vez deEO
) #C ++, 46 bytes.
É a primeira vez que faço golfe de código, mas estou bastante feliz comigo mesma. Terá todo o gosto em receber críticas / sugestões :)
fonte
Brain-Flak ,
64, 62, 58, 54 bytesExperimente online!
[Experimente online!]
Quatro bytes salvos graças ao @Riley!
Explicação:
Para o registro, tentei empurrar 32 e quadruplicar, mas é a mesma contagem de bytes.
fonte
()
s de 64 para empurrar o 1:((((((())()()()){}){}){}){})
((((((())()()()){}){}){}){}[()]){({}<(({}){}())>[()])}{}
((((((<>)()()()()){}){}){}){}){({}<(({}){}())>[()])}{}
N*2+1
vez de(N+1)*2-1
?C # 6, 31 bytes
Praticamente o mesmo que Java.
C # 5, 56 bytes
fonte
Func<ulong>
como:()=>~0UL;
Func<int, ulong>
para salvar um byte:_=>~0UL;
e acho que ainda seria válido.Quarto (gforth),
1197 bytesExperimente online
true
é o mesmo que-1
.U.
imprime um número como um número inteiro não assinado.Isso funciona no TIO, possivelmente por ter uma arquitetura de 64 bits? Não tenho certeza. Se eu executar
-1 U.
no repl.it, por exemplo, recebo 2 ** 32-1. Se repl.it suportasse números inteiros de comprimento duplo, seria necessário produzi-losUD.
.fonte
-3 3 / U.
true U.
(que também ritmos bem)true
, porque eu estou tão acostumado a usar0
e1
. Obrigado.Python3 REPL, 11 bytes
Como funciona
fonte
PowerShell ,
2914 bytesExperimente online!
Graças a @ n0rd por essencialmente jogar isso ao meio.
Isso aproveita o
PB
operador unário embutido que basicamente funciona como "multiplique o número anterior por1125899906842624
" (ou seja, quantos bytes estão em um pebibyte). Isso é acoplado ao hexadecimal0xC000
, ou49152
mais49152 pebibytes
. Dividimos isso por3
, produzindo18446744073709551616
e subtraímos3/3
para obter o valor final.fonte
"0x$(7-3)000PB-9/9"|iex
0xC000PB/3-3/3
PB
assim. Obrigado!JavaScript (ES6), 50 bytes
fonte
'䠎ᴐIF╏ɧ'
e remover o-27
Montagem x64, 7 bytes
hex (montado): 4831C048FFC8C3
desmontado, comentou:
XOR RAX,RAX ;Zero the value of 64 bit register RAX DEC RAX ;Decrement the value of RAX RET ;Return this value
O RAX é um registro de 64 bits e é mais frequentemente usado para retornar argumentos inteiros (por exemplo, C). Ao decrementar 1, seu valor passa de 0 a ... 2 ^ 64-1, o que é exatamente necessário.
No entanto, o binário montado contém uns e quatro e oito, a montagem não, mas o arquivo montado é contado na montagem, então conta? Ai, minha cabeça.
Além disso, a saída é um valor de retorno neste caso.
fonte
Flak cerebral ,
223193 bytesInclui +1 por
-A
-30 graças a DJMcMayhem
Experimente online!
Isso apenas pressionou os valores ASCII e imprime como caracteres.
Para referência, são necessários 338 bytes para gerar o número real usando o meta-jogador inteiro .
Experimente Online!
fonte
[]
. Por exemplo:((((((((((((((((((((((((()()()){}){}()){}){}())[()()()()])[][]())[[]()()])[]))()()()())[[]()()])[][()])[()()()()])()()()())[(()()()){}()])()()()()))()()())[()])[()()]))()()()())[(()()()){}()])
(Possivelmente mais estou faltando)-A
desde invocação padrão já inclui-f
, por isso é apenas uma folga para fazer-fA
em vez[]
olhar para isso quando tiver uma chance. Obrigado.MATL, 8 bytes
Provavelmente isso poderia ser melhorado, mas ainda não estou familiarizado com seqüências e tipos de MATL.
Experimente em matl.suever.net
Explicação:
fonte
cast
era usado, mas faz sentido setypecast
for usado. Obrigado por esclarecer isso.Javascript 55 bytes
o código gera e alerta a sequência 18446744073709551615 usando operações bit a bit
590300 >> 5 18446
59530-3 >> 3 7440
7370955
3 * 59 * 73 >> 3 1615
fonte
2588673709551615
para mim ...alert(0xafebff0+'7370955'+(3*59*73>>3))
funciona bemRápido, 8 bytes
playground externo / repl - 15 bytes
fonte
TI-Basic, 10 bytes
fonte