Tâche:
Je sais que nous pouvons tous ajouter deux nombres à court terme, en utilisant +
. Votre tâche consiste à créer le code le plus long possible pour ajouter deux nombres.
Règles:
- Tout le code doit être sur le sujet (ne le remplissez pas avec du code sans addition pour ajouter de la longueur)
- Le nombre est en caractères, mais ne compte pas les tabulations, les espaces ni les nouvelles lignes.
- Ne pas utiliser de noms de variable extrêmement longs
- C'est du code bowling , alors la réponse la plus longue gagne!
number
code-bowling
Le docteur
la source
la source
a + b - b + b...
compte? Ce serait infinia + b/2
, pasa + b
(c'est similaire à la série de Grandi ).Réponses:
C ++ PLUS DE 3x10 ^ + 618 (SANS ESPACES BLANCS, onglets ou nouvelles lignes)
Ce code prenait plus de maths que de logique! en comptant le nombre d'octets
PETIT CODE
SORTIE
Vraiment ? sérieusement! vous voulez voir la sortie? ce code prendrait des semaines à écrire et des mois à compiler!
la source
x
ouy
n'est pas un entier?C - 2 739 341 494 945 868 415 002 (espaces non compris)
Force brute pour la victoire. Ne gère que les entiers et préserve le comportement de débordement. Voici un extrait du code:
C'est évidemment un moyen trop gros de télécharger ici ou sur Pastebin, alors voici un programme qui va générer le code source de la fonction (diriger la sortie dans un fichier - en supposant que vous ayez assez d'espace disque):
Je frémis à quel point la fonction durerait longtemps ...
EDIT: Recalculer le score (devrait être correct) pour donner le compte exact. Je préfère penser que je l'ai joué au golf par 10²² personnages lorsque j'ai supprimé les espaces.
la source
else if
.LEFT_SIDE_NEG_2147483648 = -2147483648
) ... Il est recommandé d'utiliser des noms descriptifs au lieu de valeurs codées en dur, vous savez.C ++, 3573
3573, alors ça devenait ennuyeux, mais je peux continuer à ajouter plus de couche d’abstraction.
la source
Ruby, 29048 (peut être aussi élevé que nécessaire, mais je devais le placer sous la limite de caractères pour les messages)
Et où ai-je eu cette énorme ficelle, demandez-vous? C'est le programme que j'ai utilisé pour le générer:
Yay pour "compression"! : P
Comme vous pouvez le constater, j’ai fixé la limite de longueur de chaîne à 29 000, ce qui est juste en dessous de la limite de longueur pour les messages Stack Exchange, mais je pourrais l’étendre aussi haut que je le voulais.
la source
PHP - 1299
Les règles n'interdisent pas l'utilisation de bibliothèques externes, voici donc le code utilisant SimplePHPEasyPlus :
la source
C (via perl) - 170,111,183,381,241,069,554,076,045,499,751,727,125 (soit 1,70141183381241e + 38) pour les entrées non signées 32 bits
Ma philosophie est la suivante: lors de la mise en œuvre d'une addition à partir de rien, il n'est pas sage de s'appuyer sur des calculateurs précalculés tels que 2, 3, 7 ou 65535! 0 et 1 devraient être les seules constantes dont nous avons besoin, non?
Par conséquent, je ne calcule pas les constantes, je les calcule à la volée, comme on le voit ci-dessous! Pour prendre en charge la saisie d'entiers signés sur 8 bits, vous aurez besoin d'un code source d'une longueur de 20 461 843 caractères non-blancs. Pour implémenter une entrée d'entier signé 32 bits, vous avez besoin d'un code source de longueur 1.70141183381241e + 38 ;-)
Prêt pour un petit extrait du code entier signé de 8 bits? Vous voilà:
Notez que ce code est un peu joué au golf - je ne dis pas par exemple:
Pas besoin de vérifier si x est égal à un à chaque fois, non? Donc, mon code est beaucoup plus efficace † et concis †, et le fait plutôt:
Je pourrais certainement augmenter la longueur du code en passant à la méthode moins concise =)
Et voici le code source que j'ai utilisé pour générer ces monstruosités, mais soyez prudent, car représenter un entier 24 bits dans ce format (33 Mo chacun) a pour résultat que Perl consomme plus de 1 Go de mémoire sur ma machine. Si vous avez plus de 512 Go de mémoire à votre disposition, vous devriez pouvoir continuer et l'essayer avec des entiers 32 bits =)
Ouf, c'est ça =)
la source
Java - 2406 (3220 avec espaces)
Nous savons tous que les ordinateurs sont bons à manipuler les bits et pas très bons à tout le reste. C'est pourquoi mon programme effectue l'addition en utilisant une addition efficace au niveau des bits!
la source
Java -
309731759Pas le plus long, mais pourrait être la mauvaise interprétation la plus plausible.
edit: Oups, je viens de remarquer que ce n'est pas du code .
la source
for
boucle pour dire "reproduisez ceci sur tous les bits des bus d'entrée". (Imaginez un langage avec une syntaxe procédurale et une exécution fonctionnelle ... où l'outil principal pour le modifier était une représentation hautement procédurale sous forme d'organigrammes ... que puis-je dire, c'était un premier effort.)Python 2.7 (en ajoutant le bon chemin)
le crédit va à https://stackoverflow.com/questions/366706/bitwise-subtraction-in-python
la source
raw_input()
. Je faisais allusion au PO que c'est une bonne pratique d'affirmer la langue.la source
C # - 5395
Permet d’émettre du code cil pour l’ajout en utilisant une méthode dynamique. En fait, j'émets du code, qui à son tour émet du code pour appeler l'addition d'entiers. La fonction
Add()
ci-dessous crée une méthode dynamique qui, lorsqu'elle est exécutée, crée une méthode dynamique pour appeler l'addition d'entiers.la source
{System.SystemException}: {"JIT Compiler encountered an internal limitation."}
Supposons que le code soit plus long que n caractères. Le code suivant est beaucoup plus long.
la source
C
Ne fonctionne pas bien pour les grands nombres, mais peut être remplacé par ceci
la source