Vous avez récemment ouvert un compte sur un site de jeu risqué, où, moyennant 25 dollars, ils vous rembourseront un montant aléatoire compris entre 0 et 50 dollars. Après avoir obtenu 5 dollars environ deux fois, vous décidez de prouver que le site est une arnaque. Après avoir accédé à leur pare-feu externe avec le mot de passe par défaut, vous vous retrouvez sur leur serveur de base de données et vous déterminez où se trouvent les valeurs des montants minimum et maximum. Vous décidez de connecter 25 '9 en tant que valeur maximale, mais vous obtenez un message d'erreur indiquant que la valeur maximale doit être de type' uint64 '. Cependant, vous remarquerez que certaines touches numériques ne semblent pas taper correctement dans la console distante. Le défi se présente presque comme s'il était tapé sur un site de questions-réponses.
en n'utilisant que les programmes installés de manière pratique pour tester et exécuter votre langage particulier, indiquez la taille maximale d'un entier non signé de 64 bits. Toutefois, presque tout, à l'exception des outils de programmation, est cassé sur cette machine, ce qui vous évite d'utiliser les chiffres 1, 2,4,6,8 - en code source ou en littéraux, vous remarquerez également que l'exécution du programme semble prendre un temps exponentiellement plus long, pour chaque élément de code supplémentaire. Vous devriez donc le garder court. veux devenir riche avant le dessin!
Le défi
Ecrivez un programme qui génère 18446744073709551615, la valeur maximale d'un entier non signé de 64 bits, sous forme de nombre ou de chaîne unique.
Votre code source ne peut contenir aucun des caractères "1", "2", "4", "6" ou "8"
si votre langue ne possède pas d'entier non signé de 64 bits ou son équivalent, la sortie peut être sous forme de chaîne ou autrement, mais doit correspondre au numéro ci-dessus.
c'est du code-golf, donc le code le plus court dans chaque langue gagne!
Réponses:
Cire d'abeille , 3 octets
Explication:
Essayez-le en ligne!
Cette langue est parfaite pour ce défi.
Voici un extrait de la page Esolang sur la cire d'abeille :
Ceci est fondamentalement non signé longtemps.
EDIT: Je m'attends toujours à ce que Dennis me pardonne avec une solution à 2 octets.
la source
C, 26 octets
Imprime une
unsigned long
valeur.Nécessite une taille de
long
64 bits.la source
print~0
.~0l
devrait marcher.sizeof(long) * CHAR_BIT == 64
. Une hypothèse raisonnable pour le golf, mais il convient de le souligner.CJam (4 octets)
Démo en ligne
Ceci calcule 16 16 - 1 en utilisant les fonctions intégrées
G
pour 16 et l'opérateur de décrémentation(
.la source
Common Lisp SBCL 64 bits, 18 octets
most-positive-word
Le mot le plus positif sur le compilateur 64 bits est 64uint. C'est quelque chose.
la source
Python3 REPL, 12 octets
En REPL:
~-(~-3<<9*7)
En dehors de REPL:
print~-(~-3<<9*7)
<-> Python2!Voici un autre à 17 octets:
~-(~-3<<ord("?"))
.Explication
Rien d'extraordinaire. Voici la ventilation:
L'expression résultante est à peu près (mais pas tout à fait)
~-(2<<63)
->(2**64)-1
. J'utilise l' opérateur de têtard deux fois ici. Une astuce golfique à ce sujet est ici .Il y a aussi
sys.maxint
dans Python2 qui peut être utilisé, mais je ne regarderai pas cela.repl.it <- lien de test.
la source
~-(~
partie est les yeux du premier chat? Je ne vois pas bien le deuxième chat ...avant JC,
1513 octetsSauvegardé 2 octets grâce à manatwork.
Rien d'extraordinaire, juste (16 ^ 16) -1.
la source
(a=9+7)^a-3/3
dc , 7 octets
Je pense qu'il est permis aux langues basées sur la pile de laisser la réponse sur la cellule supérieure de la pile, similaire à une valeur de retour pour les fonctions. Si une impression explicite est nécessaire, ajoutez
p
à la fin du code.Essayez-le en ligne!
Il calcule (2 64 - 1) en utilisant plusieurs astuces:
2
est donné comme le nombre de digits (Z
) trouvé dans l'entier 10 (A
)64
est donné comme5E
. Par défaut, dc utilise 10 comme base d’entrée. Même dans ce cas, il peut accepter des nombres en notation hexadécimale, mais ils seront convertis différemment que prévu. Exemple: (5E) par défaut = (5E) (base d'entrée = 10) = (5 * 10 1 ) + (14 (E) * 10 0 ) = 50 + 14 = 641
est donné comme la profondeur de la pile (z
), puisque seulement (2 64 ) était présent alorsHistoire alternative:
Solution en courant continu: informatique (16 16 - 1), encore 7 octets!
Essayez-le en ligne!
la source
Gelée , 4 octets
Essayez-le en ligne!
Explication
la source
05AB1E , 4 octets
Explication:
Finalement! Une chance d'utiliser
05AB1E
les fonctions intégrées pour des pouvoirs de deux!Essayez-le en ligne!
Une autre réponse sur 4 octets:
Explication:
Essayez-le en ligne!
(si quelqu'un se le demande, cette question est plus ancienne que toutes les autres réponses à 4 octets)
la source
64o<
mais je ne l'ai pas encore trouvée. Quelque chose comme'@Ço<
avec une poussée créative 64 ... Si vous réussissez à pousser 64 avec 1 octet, vous pouvez obtenir 3, c'est ce que j'essaie de dire.MATLAB / Octave, 5 octets
@Sanchises a posté une excellente réponse MATLAB, mais celle-ci est une approche considérablement différente, je vais donc la poster quand même:
Dans MATLAB,
tic
renvoie le nombre de millisecondes écoulées depuis l'ouverture du programme. De manière cruciale, la valeur renvoyée est unuint64
type. Celauint64
évite de devoir attribuer un numéro au type par défaut de MATLABdouble
.Tout nombre divisé par 0 dans MATLAB est considéré comme un infini qui, pour les types à virgule non flottante, MATLAB le représente comme la valeur entière maximale pour ce type.
Cela fonctionne également avec Octave, bien que, selon l’interprète que vous utilisez, il se peut qu’un avertissement «division par zéro» soit également émis. Vous pouvez essayer le code en ligne ici même si, comme je l'ai dit, vous obtenez un avertissement / 0 qui n'apparaît pas dans MATLAB.
la source
tic==0
démarrage)bc ,
18, 16 octetsla source
-3/3
pour obtenir-1
?PHP, 16 octets
Cela ressemble beaucoup à la réponse de Ven: https://codegolf.stackexchange.com/a/110751/38505
https://repl.it/Frcy/0
la source
bash
aussi:printf %u $[~0]
.~0
is-1
, qui est1111111111111111111111111111111111111111111111111111111111111111
en binaire, en 64 bits, comparé à11111111111111111111111111111111
32 bits, et que les nombres sont dépendants du plataform.MATLAB / Octave, 22 octets
Essayez-le en ligne!
eye
est utilisé pour créer une matrice unitaire (matrice avec1
sur la diagonale, zéro sinon). Sans arguments, cela crée une1x1
matrice d'unité, ou en d'autres termes, juste un1
. Il prend un argument optionnel, qui est le type de données ('class' dans la terminologie MATLAB) de la matrice créée. Nous demandons donc un1
de la classeuint64
et le divisons par zéro, ce qui donneInf
MATLAB, qui est écrêtéintmax('uint64')
.Le vecteur
['~rw}?='-9 '']
évalue à'uint64'
. La concaténation d'un caractère vide sur un vecteur est inférieure d'un octet à celle d'utilisationchar('~rw}?='-9)
.Raisonnement vers cette réponse: le
intmax
prédéfini évalue malheureusement au maximum d'un entier signé 32 bits. L'option suivante évidente est celleuint64()
qui contient les caractères interdits. L'alternative consiste à utiliser une fonction qui prend une chaîne en tant que type de données. Les candidats évidents sontintmax
etcast
, mais les alternatives incluentzeros
,ones
eteye
.Remarque: MATLAB est installé par défaut sur pratiquement tous les sites de jeux risqués.
la source
JavaScript,
39383332 octetsEdit: 5 octets enregistrés grâce à @Arnauld.
la source
Java 8, 30 octets
Testez en ligne
la source
1846
.BF, 108 octets
Si chaque commande est considérée comme 3 bits, il s'agit potentiellement de 41 octets.
la source
+-<>[].,
Retina ,
28 à27 octetsEnregistré 1 octet grâce à Kritixi Lithos
Essayez-le en ligne!
Explication
Remplace l'entrée non existante / vide par cette chaîne. Cette chaîne particulière a été générée par "l'inverse" de ce programme. Il code à
a
traversj
comme à0
travers9
, respectivement.C'est une
T
étape de ré - écriture. Lesl
etd
sont des jeux de caractères utilisés pour la translittération.l
représente l'alphabet minuscule,d
est tous les chiffres. Donc, ilabcdefghij
revient à0123456789
.la source
d
place deEO
)C ++, 46 octets.
C'est la première fois que je pratique un code de golf, mais je suis assez content de moi-même. Acceptera volontiers toutes critiques / suggestions :)
la source
Brain-Flak ,
64, 62, 58, 54 octetsEssayez-le en ligne!
[Essayez-le en ligne!]
Quatre octets sauvés grâce à @Riley!
Explication:
Pour mémoire, j'ai essayé de pousser 32 et de quadrupler, mais c'est le même nombre d'octets.
la source
()
s parmi 64 pour pousser le 1:((((((())()()()){}){}){}){})
((((((())()()()){}){}){}){}[()]){({}<(({}){}())>[()])}{}
((((((<>)()()()()){}){}){}){}){({}<(({}){}())>[()])}{}
N*2+1
au lieu de(N+1)*2-1
?C # 6, 31 octets
Quasiment la même chose que Java.
C # 5, 56 octets
la source
Func<ulong>
que:()=>~0UL;
Func<int, ulong>
pour sauvegarder un octet:_=>~0UL;
et je pense que ce serait toujours valable.Forth (gforth),
1197 octetsEssayez-le en ligne
true
est le même que-1
.U.
affiche un nombre sous forme d'entier non signé.Cela fonctionne sur TIO, probablement parce qu'il a une architecture 64 bits? Je ne suis pas sûr. Si je lance
-1 U.
sur repl.it, par exemple, je reçois 2 ** 32-1. Si repl.it prenait en charge les entiers double longueur, leur sortie les utiliserait à laUD.
place.la source
-3 3 / U.
true U.
(qui rythme aussi très bien)true
, parce que je suis tellement habitué à utiliser0
et1
. Merci.Python3 REPL, 11 octets
Comment ça marche
la source
PowerShell ,
29 à14 octetsEssayez-le en ligne!
Merci à @ n0rd d’avoir joué au golf en deux.
Ceci exploite l'
PB
opérateur unaire incorporé qui fonctionne essentiellement comme "multiplie le nombre précédent par1125899906842624
" (c'est-à-dire combien d'octets sont dans un pebibyte). C'est couplé avec l'hex0xC000
, ou49152
alors49152 pebibytes
. Nous divisons cela par3
, cédant18446744073709551616
et soustrayons3/3
pour obtenir la valeur finale.la source
"0x$(7-3)000PB-9/9"|iex
0xC000PB/3-3/3
PB
comme ça. Merci!JavaScript (ES6), 50 octets
la source
'䠎ᴐIF╏ɧ'
et enlever les-27
Assemblage x64, 7 octets
hex (assemblé): 4831C048FFC8C3
démonté, a commenté:
XOR RAX,RAX ;Zero the value of 64 bit register RAX DEC RAX ;Decrement the value of RAX RET ;Return this value
RAX est un registre de 64 bits et est le plus souvent utilisé pour renvoyer des arguments entiers (par exemple, C). En décrémentant 1, sa valeur passe de 0 à ... 2 ^ 64-1, ce qui est exactement nécessaire.
Bien que le binaire assemblé contienne les uns, les quatre et les huit, l'assemblage n'en contient pas, mais le fichier assemblé est compté dans l'assemblage, est-ce que ça compte? Ow, ma tête.
De plus, la sortie est une valeur de retour dans ce cas.
la source
Brain-Flak ,
223193 octetsInclut +1 pour
-A
-30 grâce à DJMcMayhem
Essayez-le en ligne!
Cela vient de pousser les valeurs ASCII de et imprime en tant que caractères.
Pour référence, il faut 338 octets pour générer le nombre réel à l’aide du méta-golfeur Integer .
Essayez-le en ligne!
la source
[]
. Par exemple:((((((((((((((((((((((((()()()){}){}()){}){}())[()()()()])[][]())[[]()()])[]))()()()())[[]()()])[][()])[()()()()])()()()())[(()()()){}()])()()()()))()()())[()])[()()]))()()()())[(()()()){}()])
(Peut-être plus il me manque)-A
depuis l' invocation standard comprend déjà-f
, il est seulement un arrêt à faire à la-fA
place[]
je regarderais ça quand j'en aurais l'occasion. Merci.MATL, 8 octets
Cela pourrait probablement être amélioré, mais je ne suis pas encore familiarisé avec les chaînes et les types dans MATL.
Essayez-le à matl.suever.net
Explication:
la source
cast
c'était utilisé, mais cela a du sens sitypecast
est utilisé. Merci d'avoir éclairci ça.Javascript 55 octets
le code génère puis alerte la chaîne 18446744073709551615 à l'aide d'opérations au niveau du bit
590300 >> 5 18446
59530-3 >> 3 7440
7370955
3 * 59 * 73 >> 3 1615
la source
2588673709551615
pour moi ...alert(0xafebff0+'7370955'+(3*59*73>>3))
fonctionne bienRapide, 8 octets
aire de jeux extérieure / remplaçant - 15 octets
la source
TI-Basic, 10 octets
la source