Votre objectif est d’imprimer (sur la sortie standard) le plus grand nombre possible, en utilisant seulement dix caractères de code.
- Vous pouvez utiliser n’importe quelle fonctionnalité de votre langue, à l’exception des fonctions d’exponentiation intégrées.
- De même, vous ne pouvez pas utiliser de notation scientifique pour entrer un nombre. (Ainsi, non
9e+99
.)
- De même, vous ne pouvez pas utiliser de notation scientifique pour entrer un nombre. (Ainsi, non
- Le programme doit imprimer le numéro sans aucune entrée de l'utilisateur. De même, aucune lecture à partir d'autres fichiers, du Web, etc.
- Votre programme doit calculer un nombre unique et l’imprimer. Vous ne pouvez pas imprimer une chaîne, ni imprimer le même chiffre des milliers de fois.
- Vous pouvez exclure de la limite de 10 caractères tout code nécessaire pour imprimer quoi que ce soit. Par exemple, dans Python 2, qui utilise la
print x
syntaxe, vous pouvez utiliser jusqu'à 16 caractères pour votre programme. - Le programme doit réellement réussir dans la sortie. Si cela prend plus d'une heure pour fonctionner sur l'ordinateur le plus rapide du monde, il n'est pas valide.
- La sortie peut être dans un format quelconque (vous pouvez imprimer
999
,5e+100
etc.) - L'infini est un concept abstrait , pas un nombre. Donc, ce n'est pas une sortie valide.
code-challenge
number
busy-beaver
Ypnypn
la source
la source
If it takes longer than an hour to run on any computer in the world, it's invalid.
n'est pas objectif. Je pourrais (théoriquement) fabriquer un ordinateur qui prend une heure pour changer un état T* 2^x
?Réponses:
Wolfram Language
ack (9!, 9!) =
La sortie est en notation de flèche.
la source
ack(99!,9)
est beaucoup, beaucoup plus grand.Perl,> 1.96835797883262e + 18
Peut-être pas la plus grande réponse ... aujourd'hui! Mais attendez assez de millénaires et ce le sera!
Modifier:
Pour répondre à certains des commentaires, par «assez de millénaires», je veux dire en fait dans 100 ans.
Pour être juste, si la grande mort de l'univers par la chaleur et le gel est la façon dont l'univers se terminera (estimé à se produire ~ 10 100 ans), la valeur "finale" serait ~ 10 214 , ce qui est certainement beaucoup moins que certains des autres réponses (cependant, "les fluctuations quantiques aléatoires ou le tunneling quantique peuvent produire un autre Big Bang dans 10 10 56 ans"). Si nous adoptons une approche plus optimiste (par exemple, un modèle cyclique ou multivers), le temps s'écoulera infiniment et, par conséquent, un jour, dans un univers, une architecture haute résolution, la réponse dépasserait certaines des autres.
D'autre part, comme indiqué,
time
est en effet limité par la taille de l'entier / long, de sorte qu'en réalité, quelque chose comme~0
produirait toujours un nombre plus grand quetime
(c'est-à-dire le maximumtime
pris en charge par l'architecture).Ce n'était pas la réponse la plus sérieuse, mais j'espère que vous l'avez appréciée!
la source
time
retourner et retourner un petit nombre à un moment donné? Cela dépend si c'est 32 ou 64 bits, je supposeWolfram ≅ 2,003529930 × 10 19728
Oui, c'est une langue! Il pilote le back-end du site populaire Wolfram Alpha. C'est la seule langue que j'ai trouvée où la fonction Ackermann est intégrée et abrégée en moins de 6 caractères.
En huit personnages:
Ou 2,003529930 × 10 19728
ack(4,3)
,ack(5,2)
etc. sont beaucoup plus grandes, mais trop grandes.ack(4,2)
est probablement le plus grand nombre Ackermann qui peut être complètement calculé en moins d’une heure.Les plus grands nombres sont rendus sous forme symbolique, par exemple:
Les règles disent que tout format de sortie est autorisé, donc cela pourrait être valide. Ce nombre est supérieur à 10 10 19727 , ce qui est supérieur à toutes les autres entrées ici à l'exception de la factorielle répétée.
cependant,
est plus grande que la factorielle répétée. Le plus grand nombre que je puisse obtenir en dix caractères est:
C’est incroyablement énorme, l’Univers n’est pas assez grand pour représenter une partie significative de ses chiffres, même si vous avez pris des journaux répétés du nombre.
la source
ack(4,2)+1
solution.ack(4,2)
entrée est invalide. La saisie en langage naturel de W | A ne devrait même pas être considérée comme un langage de programmation. Ce n'est pas complet, et vous ne pouvez même pas écrire de programmes basiques tels que l'algorithme d'Euclid. Pour cette raison, je ne pense pas que ce soit une réponse valable, pas plus qu'une requête de Google.Coquille Python2, 3 010 301 chiffres
Calcul de la longueur: Python ajoutera un "L" à ces nombres longs, de sorte qu'il indique 1 caractère de plus que le résultat ne contient de chiffres.
Premier et dernier 20 chiffres:
la source
9 * 2**9999999
, alors on pourrait argumenter qu'il utilise l'exponentiation.***built-in*** exponentiation functions
ils ne sont pas autorisés, donc cela pourrait glisser sous les règles. +1floor(log10(9 * 2**9999999))+1
CJam, 2 × 10 268 435 457
Ceci calcule b , défini comme suit:
un 0 = 10
a n = a n - 1 2
b = 20 × a 28
Contexte
Cela correspond à la même idée que la réponse de Claudiu , mais elle n’est pas fondée. J'avais une idée similaire que j'ai publiée quelques minutes à peine après la sienne , mais je l'ai abandonnée car elle ne se rapprochait pas de la limite de temps.
Cependant, la suggestion de Aditsu de passer à Java 8 et mon idée d'utiliser des puissances de 10 permettaient à CJam de calculer des nombres qui échappaient à la portée de GolfScript, ce qui semble être dû à certains bugs / limitations de Ruby's Bignum.
Comment ça fonctionne
CJam, ≈ 8,1 × 10 1 826 751
Cela prend moins de cinq minutes sur ma machine, donc il reste encore des améliorations à apporter.
Ceci calcule un 20 , défini comme suit:
un 0 = 20
a n = (n × a n - 1 ) 2
Comment ça fonctionne
la source
Python 3, 9 * 2 ^ (7 * 2 ^ 33)> 10 ^ 18,100,795,813
9 * 2 ^ (2 ^ 35)> 10 ^ 10,343,311,894Edit: Ma nouvelle réponse est:
Ancienne réponse, pour la postérité:
Dix personnages exactement.
J'imprime le nombre dans l'hex, et
Par conséquent, mon code actuel est:
La preuve qu'il s'exécute à l'heure spécifiée et génère un nombre de la taille spécifiée:
Mon numéro> 10 ^ (15032385538 * log (16))> 10 ^ 18100795813
3 chiffres hexadécimaux de moins que l'impression wc ci-dessus en raison de l'initiale
0x9
.Python 3 est nécessaire car, en python 2,
7<<33
serait long et<<
ne prend pas longtemps en entrée.Je ne peux pas utiliser 9 << (1 << 36) à la place parce que:
Donc, c’est le plus grand nombre possible de la forme
a<<(b<<cd)
imprimables sur mon ordinateur.Selon toute vraisemblance, la machine la plus rapide au monde a plus de mémoire que moi, alors ma réponse alternative est:
9 * 2 ^ (9 * 2 ^ 99)> 10 ^ (1.7172038461 * 10 ^ 30)
Cependant, ma réponse actuelle est la plus importante jamais soumise, ce qui est probablement suffisant. En outre, tout cela est supposé que le transfert de bits est autorisé. Il semble être, à partir des autres réponses utilisant.
la source
Toute langue avec des noms suffisamment courts et constants, environ 18 chiffres.
Je publierais ceci en tant que réponse PHP, mais malheureusement
M_PI
cela rend un peu trop long! Mais PHP rapporte 8.0839634798317E + 17 pour cela. Fondamentalement, il abuse du manque de précision absolue dans PI: pla source
(/ 99(sin pi))
(14 caractères). Erreur dans la TI-83:99/sin(π
(8 caractères) provoque la division par zéro. Travaux dans LibreOffice Calc :=99/SIN(PI(
(10 caractères, sans compter=
) calcule 808423047055000000. auto-inserts LibreOffice les deux dernières))
dans=99/SIN(PI())
.99/sin(π
cinq ou huit octets? Je sais que TI-BASIC stocke de nombreuses commandes sous forme d'octets simples. est l'sin(
un d'entre eux?Haskell
Sans astuces:
On peut dire sans rien calculer:
Adapter la réponse de Niet :
la source
floor(infinity)
est un nombre fini? Que diable Haskell?isInfinite $ 1 / 0 -- True
. Pour autant que je sache, IEEE 754 se définit1 / 0
par l'infini.1 / 0 == Infinity
.Powershell - 1.12947668480335E + 42
Multiplie 99 Pebibytes fois 9 000 000 000 Pebibytes.
la source
J (
((((((((9)!)!)!)!)!)!)!)!
)Oui, c'est beaucoup.
10^(10^(10^(10^(10^(10^(10^(10^6.269498812196425)))))))
être pas très précis.la source
!!9x
rien n'a été imprimé à l'écran. Je doute sincèrement que cela!!!!!!!!9x
sera jamais calculé.!!9x
finalement imprimé à l'écran. Je suis impressionné par le fait qu'il ait réellement calculé la valeur, mais il échoue toujours complètement laK / Kona :
8.977649e2611.774896e308!170
crée un vecteur de nombres de 0 à 1691.6+
ajoute un à chaque élément du vecteur et les convertit en réels (plage de 1,6 à 170,6)*/
multiplie chaque élément du tableau ensembleSi Kona prenait en charge la précision quad, je pourrais le faire
*/9.+!999
et éviter 1e2584. Malheureusement, ce n'est pas le cas et je suis limité à la double précision.ancienne méthode
!99
crée un vecteur de nombres de 0 à 989+
ajoute 9 à chaque élément du vecteur (plage de 9 à 107)9.*
multiplie chaque élément par 9.0 (conversion implicite en reals, donc 81.0 à 963.0)*/
multiplie chaque élément du vecteur ensemblela source
HTML, 9999999999
.. j'y suis arrivé.
la source
9^9999
impressions9^9999
. Juste sayin :)PHP_INT_MAX
est 11Python - Varie, jusqu'à 13916486568675240 (jusqu'à présent)
Pas tout à fait sérieux mais je pensais que ce serait amusant.
Parmi toutes les choses que j’ai essayées,
len
c’est de manière constante que l’on me donne de gros identifiantsCédé 13916486568675240 (17 chiffres) sur mon ordinateur et 13842722750490216 (également 17 chiffres) sur ce site . Je suppose qu’il est possible que cela vous donne une valeur aussi basse que 0, mais cela pourrait aussi aller plus haut.
la source
calculate
rien.*99
partie appelle un calcul.id(id)
ouid(0j)
, vous pouvez multiplier par999
vars
donne systématiquement la valeur la plus élevée (mais 4 caractères) suivie desum
. Utilisezprint(sorted([(id(x),x)for x in[id,len,max,min,str,int,ord,chr,sum,map,abs,all,any,bin,bool,eval,oct,vars,iter,list,set,repr,round,zip,type,pow,dict,dir,hex]])[::-1])
pour vérifier.Golfscript, 1e + 33 554 432
Les calculs
10 ^ (2 ^ 25)
, sans utiliser d'exposants, s'exécute en 96 secondes:Il peut calculer jusqu'à
9 ^ (2 ^ 9999)
, si on lui donne suffisamment de temps, mais incrémenter l'exposant interne d'un unité le fait multiplier par trois le temps; la limite d'une heure sera donc bientôt atteinte.Explication :
Utiliser une version précédente avec la même idée:
Le décomposer:
La pile au début de chaque bloc se compose d'un numéro, le numéro actuel. Cela commence comme
8
. Ensuite:Donc, la pile, pas à pas, ressemble à ceci:
... etc. Ecrit en notation mathématique, la progression est la suivante:
la source
wc
. Je vais éditer pour le rendre plus clairwc -c
pour rendre la sortie plus claire10{.*}25
délivre 33 554 434 chiffres et termine en 90 secondes sur ma machine. Je ne sais pas pourquoi, mais10{.*}26*
n'imprime rien.wxMaxima ~ 3x10 49,948 (ou 10 8.565.705.514 )
La sortie est
Je ne sais pas si cela correspond tout à fait aux spécifications (en particulier au format de sortie), mais je peux frapper encore plus gros:
La sortie est
C'est à peu près 10 8.565.705.514, ce qui est nettement plus grand que la plupart des réponses principales et a été calculé en environ 2 secondes. La
bfloat
fonction donne une précision arbitraire .la source
Haskell, 4950
Aww man, ce n'est pas beaucoup! 10 caractères commencent après le signe dollar.
la source
print
? En outre,9/0.000001
est supérieur àsum[1..99]
.Mathematica, 2.174188391646043 * 10 ^ 20686623745
Dix personnages exactement.
la source
Coquille Python,
649539999890001Beats Haskell, pas vraiment une réponse sérieuse.
la source
calculate
la réponse.9**9**9**9
est également, car il s'agit d'un opérateur arithmétique (non intégré dans func).Wolfram Alpha (un site Web compte-t-il comme une langue)?
les sorties
Merci à Cory pour le conseil que les espaces fonctionnent aussi bien que les parens.
la source
((99!)!)! > 4
ne revient jamais.Befunge-93 (1,853,020,188,851,841)
Heureux que personne n'ait encore fait Befunge (c'est mon créneau), mais bon sang je ne peux trouver aucun truc pour en augmenter le nombre.
Donc, il est 9 ^ 16.
Multiplie fondamentalement la valeur en haut de la pile avec elle-même. Donc, la valeur au sommet de la pile va:
et
Affiche la valeur finale. Je serais intéressé de voir si quelqu'un a de meilleures idées.
la source
Je préfère poster ceci comme un commentaire ci-dessus, mais apparemment je ne peux pas puisque je suis un noob.
Python:
9<<(2<<29)
J'adopterais un décalage plus important, mais Python semble vouloir que l'opérande correct d'un décalage soit un entier non long. Je pense que cela se rapproche du max théorique:
9<<(7<<27)
Le seul problème avec ceux-ci est qu'ils pourraient ne pas satisfaire la règle 5
la source
Matlab (1.7977e + 308)
Matlab stocke la valeur du plus grand nombre (à double précision) en virgule flottante dans une variable appelée
realmax
. L'appeler dans la fenêtre de commande (ou sur la ligne de commande) affiche sa valeur:la source
realmax+1
. Je l’ai essayée pour le plaisir et surprise, elle retourne exactement le même nombre que vous (puis j’ai ri quand j’ai réalisé…eps(realmax)=1.99584030953472e+292
).Python, ca. 1.26e1388
Donne:
la source
Au moins Python 3.5.0 (64 bits), plus de 10 ^ 242944768872896860
Dans un monde idéal, ce serait
9<<(1<<63)-1
, mais il n'y a pas assez d'octets pour cela. Ce nombre est si grand qu'il faut presque 1 EiB de mémoire pour le contenir, ce qui est un peu plus que ce que j'ai sur mon ordinateur. Heureusement, il vous suffit d'utiliser environ 0,2% de l'espace de stockage mondial pour le stocker. La valeur en binaire est1001
suivie de 8070450532247928832 zéros.Si Python sortait pour les machines 128 bits, le maximum serait
9<<(9<<99)
, ce qui nécessite moins de 1 MiYiB de mémoire. C'est bien, car il vous resterait assez d'espace adressable pour stocker l'interpréteur Python et le système d'exploitation.la source
Cubix , 9.670457478596419e + 147 (non compétitif)
Non compétitif car Cubix est plus récent que ce défi. Vous pouvez le tester en ligne ici , mais notez qu'il n'imprime pas le numéro; vous devrez mettre le programme en pause après les deux dernières
*
s pour voir la valeur sur la pile.Comment ça fonctionne
Cubix est un esolang à 2 dimensions dans lequel le code est enroulé autour d'un cube. Ce code est exactement équivalent au cube suivant, avec
.
no-op:Ensuite, le code est exécuté, le pointeur d'instruction (IP) commençant dans le coin supérieur gauche de la face la plus à gauche, en regard de droite.
"
active le mode chaîne, où tous les caractères rencontrés jusqu'à la prochaine"
poussent leurs codes dans la pile. L’IP tourne tout autour du code en poussant trois/
s (47), deux*
s (42) et deux.
s (46) sur la pile, avant de quitter à nouveau le mode chaîne.Voici où ça devient intéressant. Le premier miroir
/
reflète l'adresse IP, elle est donc tournée vers le haut. il tourne ensuite autour du cube, en tapant ces caractères:Les trois
*
s multiplient les deux premiers éléments de la pile. Désormais, contrairement à la plupart des langages basés sur des piles où les opérateurs arithmétiques affichent leurs arguments, Cubix laisse les valeurs précédentes sur la pile. Cela signifie donc que cela calcule46*46 = 2116, 46*2116 = 97336, 2116*97336 = 205962976
.Lorsque l'IP atteint le
/
nouveau, il est tourné à droite. Il frappe ensuite le miroir suivant et suit ce chemin:Les deux astérisques multiplient les deux premiers éléments. Ensuite, le miroir dirige à nouveau correctement l’adresse IP et le troisième miroir répète le processus:
Enfin, l’IP quitte la section miroir orientée vers l’est. Les deux astérisques finissent par se multiplier deux fois, laissant un résultat de 9.670457478596419e + 147 sur la pile. Cela pourrait être imprimé avec
O
, mais il n'y a pas de moyen facile de le faire car pratiquement tous les points du cube sont déjà utilisés.la source
Scala, 2 63 -1
Pauvre, pauvre Scala. Prend au moins 8 caractères pour obtenir un
BigInt
valeur, ce qui ne laisse pas assez de place pour en faire une grande.Mais avec seulement 7 caractères de code (compté), nous pouvons imprimer le plus grand positif possible
Long
:la source
Brainf ** k 256 - 2147483647
Si vous ignorez le fait que la plupart des compilateurs et interprètes génèrent des données telles qu'elles sont équivalentes à l'ASCII (soyez leanient, c'est ce qu'elle est;)) , la valeur maximale du type de données de l'interpréteur / compilateur sera renvoyée.
Sur certains systèmes, il ne s'agit que de 256, mais sur certains (le mien par exemple), il s'agit de la valeur maximale d'un entier de 32 bits, soit 2 147 483 647.
Modifier:
Imprimera la même chose dans beaucoup moins de caractères
la source
-1
sur les interprètes qui utilisent des valeurs signées pour la bandePerl, non en compétition
J'utilise ceci pour mettre en évidence un petit coin connu de Perl.
Perl ne peut pas vraiment rivaliser sur ce marché car il n’a pas de bignums intégrés (vous pouvez bien sûr charger une bibliothèque de bignum).
Mais ce que tout le monde sait n'est pas complètement vrai. Une fonction principale peut en réalité gérer de grands nombres.
Le
pack
formatw
peut en fait convertir un nombre naturel de n'importe quelle taille entre base10
et base128
. Le nombre entier en base 128 est toutefois représenté sous forme d'octets de chaîne. La chaîne de bitsxxxxxxxyyyyyyyzzzzzzz
devient les octets:1xxxxxxx 1yyyyyyy 0zzzzzzz
(chaque octet commence par 1 sauf le dernier). Et vous pouvez convertir une telle chaîne en base 10 avec unpack. Donc, vous pouvez écrire du code comme:qui donne:
Vous pouvez remplacer les
4**4
valeurs par des valeurs plus grandes jusqu'à ce que vous sentiez que cela prend trop de temps ou utilise trop de mémoire.Malheureusement, c'est beaucoup trop long pour la limite de ce défi et vous pouvez affirmer que le résultat en base 10 est converti en chaîne avant de devenir le résultat, de sorte que l'expression ne produit pas vraiment de nombre. Mais en interne, perl fait vraiment l’arithmétique nécessaire pour convertir l’entrée en base 10, ce que j’ai toujours considéré plutôt soigné.
la source
TI-36 (pas 84, 36), 10 octets, environ. 9.999985426E99
Les calculatrices plus anciennes peuvent également être programmées dans une certaine mesure;)
69!58.4376
Ceci est très proche de la plage maximale qu'une calculatrice TI peut afficher:
-1E100<x<1E100
la source
Perl 6 , 456,574 chiffres
Pas de TIO car il faut 2 minutes pour courir.
la source