Votre tâche consiste à écrire un programme, une fonction ou un extrait (oui, les extraits sont autorisés) qui génère simplement un entier. Cependant , vous devez pouvoir séparer votre soumission en préfixes qui produisent également des entiers distincts. Vous ne pouvez pas utiliser d'octets apparus dans les préfixes précédents. Par exemple, nous pouvons avoir les préfixes:
1 # 1 (Now we can't use 1)
1-6 # -5 (Now we can't use - or 6)
1-6/3 # -1 (Now we can't use / or 3)
1-6/3+0xA # 9 Final submission
Règles
- Votre objectif est de créer pour essayer de créer les entiers les plus uniques, tout en les maintenant proches de zéro.
- Le système de notation est
((number of unique integers)**3)/(sum of absolute values)
, où plus votre score est élevé, mieux c'est. L'exemple ci-dessus marque .
- Le système de notation est
- Il doit y avoir au moins deux entiers uniques (pas de division par zéro!)
- Veuillez formater votre réponse comme suit:
# Language, \$(4^{3})/16 = 4\$
1-6/3+0xA (the full program)
- Mentionnez si votre soumission est composée d'extraits qui évaluent une valeur, des fonctions ou des programmes complets.
- Énumérez chacun des préfixes et (éventuellement) une explication de leur fonctionnement.
print 123-len(open(__file__).read())
suivi d'#
un de chaque octet non utilisé jusqu'à présent (à l'exception de certains caractères de contrôle), avec des préfixes coupant ces octets. Ajustez 123 à ce qui centre la plage de sorties autour de 0. Pour un meilleur score, la partie non-commentaire du programme peut être réécrite en utilisant seulement les 7 caractères distincts qui sont universels pour Python. Est-ce que tout est valable?Réponses:
TI-BASIC (TI-84 + CE),2383/14161=952.0
Les 256 octets de TI-BASIC se décomposent ainsi:
"
,→
et les sauts de ligne qui cassent les chaînes.La chaîne contient les 237 octets autorisés de la première catégorie qui ne figurent pas déjà dans
118-length(
.Le programme calcule 238 entiers distincts, allant de 118 à -119. Le score est donc de2383∑118n=−119|n|=952.
la source
mean({1,2,3
, ce qui se termineraitmean({1,2,3})
. les chaînes sont également complétées:Disp "Hi!
complète àDisp "Hi!"
. Par conséquent, la citation finale n'est pas nécessairevim, 14³ / 53 = 51,77
Essayez-le en ligne! (tous les préfixes)
Panne:
la source
<esc>
représente la touche d'échappement et<c-char>
représente ctrl + charLenguage , 256³ / 16384 = 1024
Le code source de la solution peut être décrit comme suit:
Chaque exécution d'octets identiques combinée avec les exécutions précédentes constitue un préfixe, et le programme complet est toutes les chaînes décrites ci-dessus concaténées.
Il s'agit d'un score optimal. (Les programmes impriment tous les nombres de -127 à 128 inclus.)
Pour créer cette réponse, j'ai d'abord copié la réponse Java ici pour générer des programmes brainfuck pour imprimer une chaîne. Je l'ai exécuté avec cette
main
fonction:Ensuite, j'ai exécuté ce script Ruby pour générer le texte lisible par l'homme montré ici:
Le plus grand programme a une longueur de 3594571896764310192036774345469579167648804468538578264427 octets (et des impressions
-90
).la source
(Merci à cet utilitaire intéressant pour la conversion.) Ce qui précède s'évalue efficacement dans le code suivant:
... qui crée un proxy qui convertit la longueur d'un nom de propriété en nombre. Le premier préfixe termine un caractère après le
.
et n'utilise que 6 caractères uniques, à l'exception du.$
. Les 63 tranches suivantes ajoutent 63 autres caractères à un octet qui sont valides dans les noms de propriété d'objet JS. Les 44 tranches suivantes ajoutent des caractères valides de deux octets constitués d'octets inutilisés. Les tranches finales append&''
,|""**""
et,~{}
. Les premiers retours de tranche-2
, la deuxième2
, puis-3
, puis3
,-4
,4
,-5
, etc. jusqu'à trois tranches qui sont0
,1
et-1
.la source
Pour celui-ci, nous utilisons des extraits de brain-flak, donc nous nous soucions de la valeur et non de ce qu'ils font.
Programme complet:
Préfixes et sortie
Essayez-le en ligne!
Explication
C'est probablement la meilleure réponse d'une brain-flak depuis que nous avons utilisé tout le personnage auquel Brain-flak se soucie, et nous ne pouvons pas regrouper les nombres plus près de zéro.
Le premier extrait est
<>
,<>
modifie la pile mais évalue sinon à zéro, donc nous commençons par zéro. A partir de là, nous ajoutons(())
cela en fait un. Nous aurions pu le faire()
, car c'est aussi un, mais si nous en poussons un maintenant, nous pourrons le rappeler plus tard avec{}
et[]
. C'est à peu près le seul moyen{}
et[]
peut créer de la valeur, alors nous le faisons. Puisqu'il y a une chose sur la pile qui[]
compte comme un 1, nous soustrayons donc 3 du total[[][][]]
en nous amenant à -2. Enfin, nous utilisons{}
pour faire apparaître celui que nous avons poussé plus tôt, ce qui nous amène à -1.la source
Après deux heures d'essais et d'erreurs, j'ai finalement obtenu tous les entiers de
-4
à+5
(et7
).Il s'agit d'un extrait de code avec les extraits de préfixe suivants:
Essayez-le en ligne!
la source
2*2
en22&7
(-3 & 6 au lieu de -3 & 4) pour corriger cette répétition de*
.'
et_
en utilisantcmp(cmp,())
au lieu decmp('','_')
Si cela est utile.--[-1-1-1-1-1]
, mais cela n'améliore pas vraiment votre score.Lot, 176³ / 7744 = 704
Le premier préfixe inclut les deux points et affiche le nombre -88. Les préfixes suivants produisent des nombres ascendants et les sorties finales du programme 87.
la source
Tous les caractères échappés sont des octets simples - j'ai présenté le programme sous cette forme pour faciliter la copie et le collage. Ce lien est vers le programme complet sans caractères d'échappement; comme on peut le voir, il existe de nombreux espaces réservés pour les caractères non imprimables utilisés.
L'approche utilisée est similaire à la réponse TI-BASIC de lirtosiast , bien que j'aie écrit ma réponse avant de parcourir les autres entrées. Le cordon fonctionne comme suit:
La chaîne est composée de chaque caractère codé sur un octet autre que 0 (NULL), 127 (retour arrière) et les caractères passe-partout (
-C\|l"
). De cette façon, chaque caractère de la chaîne peut être supprimé un par un pour produire des chaînes de longueurs allant de 248 à 0. Ces programmes donnent des résultats dans la plage [-124-124], avec une somme de valeurs absolues de 15500.Le code a été généré à l'aide de ce programme :
Et la somme des nombres générés à partir de chacun des programmes tronqués a été trouvée avec ce programme :
la source
Gelée , 984
Essayez-le en ligne!
Vous pouvez voir les préfixes (séparés par un double retour) ici .
Les numéros imprimés sont, dans l'ordre:
la source
Python 2,113/ 53=25,1132075472
Préfixes:
Pas optimal, mais le meilleur que j'ai pu trouver personnellement avec cette structure particulière.
la source
Python 263/ 9 = 24
Voici les préfixes et ce qu'ils produisent
la source
Propre , 403 / 400 = 160
Essayez-le en ligne!
Définit
n
ce qui produit en-20, -19, ..., 18, 19
fonction de la longueur du typeG
.Le plus petit préfixe d'
G
apparence:: G = G
, précédé par les importations et définitions assorties.Le plus grand préfixe d'
G
apparence , pareillement précédé.:: G = GABCFHIJKMNOPQRUVWXYZcjkqxyz_0123456789`
la source
Japt ,2453/ 15006=980.0163268026123
Essayez-le en ligne!
Comme les autres entrées, utilise la longueur d'une chaîne. Les caractères de l'extrait de départ, ainsi que
\r
(les zones de texte ne jouent pas bien avec cela) et{
(caractère d'interpolation de chaîne) sont exclus de la chaîne.Le premier programme est
_Ê-122}$($"
, chaque programme est un caractère plus long à l'exception de lorsque vous ajoutez\\
.la source
122
par#z
mais cela n'améliorerait pas votre score.Python 3,( 63) / 12 = 18
Ceci est un extrait.
Les extraits de préfixe individuels sont les suivants:
Les opérateurs de Python traitent de bits entiers négatifs comme complément à deux avec un nombre illimité
1
de à droite, donc-5
est traité comme...11111011
, qui , lorsqu'il est ORed avec...000010
donne...11111011
sans changement.la source
Exceller,( 63) / 12 = 18
Prefix
défi ne se gèle pas bien avec la structure de formule d'Excella source
Enchantments Runiques , 117 trois / 3422 = 468.034
Essayez-le en ligne!
Et le préfixe .
Tirages [-58,58] inclus.
Utilise une tactique similaire à celle des autres entrées, utilisant une chaîne progressivement plus longue, obtenant sa longueur, soustrayant
B
(valeur décimale de66
) et imprime le résultat. Utilise un caractère non imprimable(affiché dans le bloc de code
€
car, apparemment, c'est ce qui est€
évalué en HTML) afin d'utiliser la valeur d'octet0x80
(et de consommer une valeur autrement inutilisable0x00
) et de marquer une valeur de plus. Seules les valeurs d'octets jusqu'à 127 qui ne peuvent être représentées d'aucune façon le sont10
et13
, car elles entraîneraient le programme à deux lignes de haut et ne seraient pas lues correctement par le pointeur d'instruction.la source
Charbon de bois ,
95³ / 2256 = 380.0421196³ / 2304 = 384Le premier préfixe est les 7 premiers octets et renvoie le nombre
47
. Essayez-le en ligne! Les préfixes suivants produisent des nombres décroissants et les sorties finales du programme-48
. Essayez-le en ligne! Edit: augmentation du score de 3,95789 grâce à @ ASCII uniquement.la source