Défi:
Votre tâche consiste à écrire autant de programmes / fonctions / extraits que vous le pouvez, chacun produisant / imprimant / renvoyant un entier. Le premier programme doit générer le nombre entier 1
, le second 2
, etc.
Vous ne pouvez pas réutiliser les caractères entre les programmes. Donc, si le premier programme est x==x
:, vous ne pouvez pas utiliser les caractères x
et à =
nouveau dans les autres programmes. Remarque: Il est permis d'utiliser le même caractère plusieurs fois dans un programme.
Notation:
Le gagnant sera la soumission qui compte le plus haut. En cas d’égalité, le gagnant sera la soumission ayant utilisé le moins d’octets au total.
Règles:
- Vous ne pouvez utiliser qu'une seule langue pour tous les nombres entiers
- Les extraits sont autorisés!
- Pour rester honnête, tous les caractères doivent être codés en utilisant un seul octet dans la langue de votre choix.
- La sortie doit être en décimal. Vous ne pouvez pas le sortir avec une notation scientifique ou un autre format alternatif. La sortie de nombres flottants est correcte, à condition que tous les chiffres affichés derrière le point décimal le soient
0
. Alors,4.000
est accepté. Les inexactitudes dues aux FPA sont acceptées, tant qu'elles ne sont pas affichées dans la sortie. ans =
, les espaces de début et de fin, les nouvelles lignes, etc. sont autorisés.- Vous pouvez ignorer STDERR tant que la sortie correcte est renvoyée à STDOUT
- Vous pouvez choisir d’envoyer le nombre entier à STDERR, mais uniquement si STDOUT est vide.
- Les langues indépendantes des symboles (comme Lenguage ) ne sont pas autorisées
- Les lettres sont sensibles à la casse
a != A
. - Les programmes doivent être indépendants
- Les espaces ne peuvent pas être réutilisés
- Vous devez utiliser des chiffres ASCII dans la sortie
Les explications sont encouragées!
number
code-challenge
restricted-source
Stewie Griffin
la source
la source
#include <iostream>
autres logiciels standardisés en C ++. Vous avez besoinfrom numpy import *
. Remarque: je ne suis pas un programmeur, donc je ne connais pas toutes les nuances. On peut discuter en chat si quelque chose n'est pas clair :)Réponses:
JavaScript (ES7), score 17, 176 octets
Ils ont dit que cela ne pouvait pas être fait, alors je l'ai fait: D (grâce à l'aide de @FullDecent)
Caractères inutilisés:
Je ne pense pas que 18 est possible, mais j'ai dit la même chose à propos de 17 ...
Explication
JavaScript est un langage très faiblement typé. Si vous essayez d'effectuer une opération mathématique sur une valeur autre qu'un nombre, JS fera de son mieux pour la convertir en nombre. Cela permet beaucoup de solutions intéressantes. J'ai essayé d'éviter autant que possible d'utiliser les chiffres pour qu'ils puissent être utilisés plus tard.
**
est l'opérateur d'exponentiation dans ES7. La chaîne vide, lorsqu'elle est contrainte à un nombre, devient0
alors calculée0 ** 0
, ce qui1
correspond à JavaScript./~/
est un littéral de regex, et~/~/
retourne-1
, donc this~(-1 / -1) / -1
=~(1) / -1
=-2 / -1
=2
. (crédits à @ GOTO0 pour l'idée)3
.4
.NaN
est falsy, donc!NaN
est -àtrue
, qui est équivalent à1
. L'expression devient ainsi1 - -1 - -1 - -1 - -1
=1 + 1 + 1 + 1 + 1
=5
.6
.7
.8
.9
.+[]
est0
,[[]][+[]]
retourne donc le premier élément de[[]]
(c'est-à-dire[]
) et l'++
incrémente1
. Puis+[+[]]
ajoute le tableau[0]
, qui est contraint à une chaîne et rend"10"
.11
. Au départ, j'avais utilisé11&1111
pour 3 et33/3
11 ans jusqu'à ce que je réalise à nouveau à quel point je suis stupide ...12
et utilisez-la.length
.2
s et>
s pendant un moment pour obtenir celui-ci. J'ai eu de la chance à nouveau:222 >> 2
est55
, et55 >> 2
est13
.14
en hex (0xE
), mais nous avons besoin du chiffre0
ailleurs. Donc, au lieu de cela, nous ajoutons le résultat de``^``
à la chaînexE
; la chaîne vide contrainte à un nombre est0
, donc cela retourne0 ^ 0
=0
. Ensuite, le résultat est XORed avec la chaîne vide, qui convertit les deux valeurs en nombres;"0xE" ^ ""
est14
.0XF
est un littéral hexadécimal avec une valeur de15
.C
surCSS == CSS
(c'est-à-diretrue
). Ensuite, nous prenons le résultat et performons<< C
quatre fois, ce qui multiplie fondamentalement1
par2 ** 4
.555...555%55
de renvoyer un nombre qui n'est pas0
ou5
. J'ai eu beaucoup de chance en jouant ici.Des stratégies qui fonctionneraient sur plusieurs nombres:
-!NaN
fonctionnerait sur n’importe quel nombre (actuellement5
), bien qu’il devienne grand très vite.~/~/
fonctionnerait sur n’importe quel nombre (actuellement2
), bien que cela devienne très grand très vite.+[]
fonctionnerait sur n’importe quel nombre (actuellement10
), bien que ce soit de loin le plus facile sur10
ou11
..length
travaillerait sur n'importe quel nombre.`${-``}xE`-``
travaillerait à peu près n'importe quel nombre si vous le faites correctement.C<<C
fonctionnerait sur tout pouvoir de deux (actuellement16
), ou tout int si vous avez inclus|
.la source
window.
propriétésdefaultPixelWidth
, mais elles semblent toutes contenir l’unl
ou l’ autree
. Vous pouvez obtenir un autre 0URL | URL
mais cela ne vous aidera pas beaucoup.+ - * ~ < x X length
1 2 3 4 5 6 7 8 9 + - * ~ < x X length
. Donc, avant de le résoudre, nous ne pouvons pas aller 18Gelée , 47 nombres entiers, 519 octets
Chaque ligne est un programme complet et séparé.
Essayez-le en ligne! (comprend la suite de tests et le vérificateur d'intersection)
Comment ça fonctionne
Chaque programme complet sans argument de ligne de commande exécute son lien principal (défini sur la dernière ligne) de manière niladique, c'est-à-dire sans entrée. Si le premier lien de la chaîne est un nilad, il est consommé, appelé, et l'argument et la valeur de retour du lien principal sont définis avec le résultat; si le premier lien de la chaîne est une monade ou une dyade, il n'est pas consommé et l'argument implicite et la valeur de retour 0 sont utilisés à la place. Dans les deux cas, le reste de la chaîne est exécuté monadiquement.
La gelée modifie sa production dans plusieurs cas. Notamment, un tableau singleton est imprimé sans ses crochets, donc 42 et [42], et impossible à distinguer après l'impression. Nous allons l'utiliser à plusieurs reprises.
1 - 10
L' atome existant teste si la valeur de retour 0 appartient à l'argument 0 . C'est le cas, donc
e
renvoie 1 .BI$
est un lien rapide, en particulier une chaîne monadique formée par le$
regroupement rapide de l' atome binaireB
et de l' atome d' incrémentationI
. Combinés, ils convertissent un entier en un tableau de chiffres en base 2, puis calculent les différences en aval des chiffres résultants. Si le tableau n'a qu'un seul élément, il n'y a pas de différences enI
aval et renvoie un tableau vide (falsy); s'il y a au moins deux chiffres,I
retourne un tableau non vide (vérité).Le
#
composant rapide utilise le lien rapide précédent et l’applique à 0 , 1, 2,… jusqu’à ce qu’il y ait suffisamment de correspondances et retourne le tableau des correspondances. Le montant requis est calculé par⁼
, qui compare la valeur de retour / argument 0 à lui-même, ce qui donne 1 . Ainsi, le programme entier renvoie [2] , le premier entier non négatif à deux chiffres en base 2.⁾⁾⁾
est une chaîne littérale, en particulier la chaîne ⁾⁾ . L' atome Grade UpỤ
trie ses indices en fonction de leurs valeurs correspondantes. puisque les deux caractères sont égaux, cela donne [1, 2] . Le tableau résultant est réduit avec XOR au niveau du bit^/
, ainsi le programme entier renvoie 3 .ı
initialise l'argument et renvoie la valeur à l'unité imaginaire i .*
est la dyade d' exponentiation , dont l'argument correct est par défaut l'argument du lien principal. Ainsi,***ı
calcule ((i i ) i ) i ≈ 4,81 + 0i , l'Ḟ
atome ( plancher pour les arguments réels, partie réelle pour les arguments complexes) calcule la partie réelle ( 4,81 ), puis lesḞ
étages, donnant 4 .Ces trois programmes se composent d'un seul littéral et font exactement ce que vous attendez.
Le littéral
.
est un raccourci pour 0.5 et initialise l'argument et la valeur de retour. L' argument droit de la division entière (:
) de dyad ( ) correspond par défaut à l'argument des liens principaux. Il::::
calcule donc 0.5 / 0.5 / 0.5 / 0.5 / 0.5 , ce qui donne 8 .Un autre littéral.
L' atome tout égal
E
renvoie 1 si tous les éléments de son argument sont égaux et 0 sinon. Un argument entier z est promu à [z] , doncE
renvoie 1 pour l'argument implicite 0 .Maintenant, l' atome de sortie
Ȯ
imprime 1 dans STDOUT. Nous comparons ensuite 1 avec l'argument implicite 0 en utilisant l' atome inférieur à<
. Le résultat est (1 <0) = 0 et il est imprimé implicitement à la fin du programme.11 - 20
L' atome de la grille
G
tente de créer une table visuellement agréable à partir de son argument. Pour un argument entier simple (ici: 0 ), il l'enroule simplement dans un tableau. L' atome plat non égal⁻
compare l'argument implicite 0 avec le résultat à droite ( [0] ), ce qui donne 1 car ses arguments ne sont pas égaux. L' atome de représentationṘ
imprime 1 sur STDOUT et renvoie le résultat. A la fin du programme, la valeur de retour finale est imprimée de manière implicite, nous obtenons donc une sortie de 11 .Le self quick
`
transforme une dyade en une monade en l'appelant avec des arguments identiques de gauche et de droite. Premièrement,=`
compare l’argument implicite 0 avec lui-même, ce qui donne 1 .L' atome du produit cartésien
p
attend des listes en tant qu'arguments, il promeut donc l'entier 1 dans l'intervalle [1,…, 1] = [1] .p`
prend le produit cartésien de [1] et lui-même, donnant [[1, 1]] .Le eval atome
V
transforme toutes les matrices plates (contenant uniquement des chiffres et des caractères en chaînes de caractères), évalue ensuite les chaînes résultantes comme niladiques programmes de gelée. [[1, 1]] est d'abord transformé en [“11”] , puisV
évalue la chaîne, donnant [11] . Une fois de plus,V
transforme ce tableau en "11" , puis l’évalue pour en obtenir 11 .Maintenant,
×`
multiplie 11 avec lui-même, donnant 121 . L' atome décimal transforme 121 en [1, 2, 1] , l' unique atomeQ
ignore le second 1 etV
transforme une fois de plus une liste de chiffres en un entier résultant de leur concaténation, renvoyant 12 .~
est le bitwise PAS l' atome. Avec l'arithmétique du complément à deux, il mappe un argument z à ~ z = - (z + 1) .A
est l' atome de valeur absolue , de sorte qu'il mappe - (z + 1) = z + 1 . Avec la valeur de retour initiale 0 , les treize copies de~A
return 13 .La constante
⁷
contient le caractère de nouvelle ligne '\ n' et initialise l'argument et la valeur renvoyée.L' atome non valide
Ṿ
tente de créer une représentation sous forme de chaîne de son argument z de sorte qu'un programme Jelly composé de ce code renvoie z .Le premier appel renvoie consciencieusement la chaîne "" \ n " , qui est un caractère littéral. Le prochain appel renvoie "" "," \ n " - une paire de littéraux de caractères. Le troisième et dernier appel renvoie "" "," "," ,, "", "\ n" - un quintuplet de littéraux de caractères.
Enfin, l' atome d' index de fenêtre
w
promeut son argument droit '\ n' dans la chaîne "\ n" et recherche le premier index d'une sous-chaîne commençant par "\ n" . Cela retourne 14 .⁴
est la constante 16 . Le lien rapide filterfalse each (ḟ€
) favorise son argument de gauche 16 dans l'intervalle [1,…, 16] , puis itère sur ses éléments.Pour chaque élément z ,
ḟ⁴
est exécuté, en promouvant d'abord z en [z] , puis en supprimant toutes les occurrences (le cas échéant) de 16 . Cela donne le tableau [[1], [2],…, [14], [15], []] , où le dernier tableau est vide car il en contient 16 .Enfin, l' atome maximal
Ṁ
sélectionne [15] .L' atome modulaire
m
- appelé avec les arguments x (tableau) et y (entier) prend habituellement tous les | y | e élément de x , en commençant par le premier si y> 0 , avec le dernier si y <0 . Cependant, lorsque y = 0 , il retourne x concaténé avec son inverse.L'argument entier gauche 0 est d'abord promu à [0] . La première copie de [0]
m
concatène avec elle-même, donnant [0, 0] . Les copies restantes transforment ce résultat en [0, 0, 0, 0] , puis [0, 0, 0, 0, 0, 0, 0, 0] et enfin [0, 0, 0, 0, 0, 0 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] .Enfin, count atom
ċ
compte le nombre de fois que l'argument implicite 0 apparaît dans le tableau résultant, renvoyant 16 .ṭ
est l’ atome tack et ajoute son argument de gauche à celui de droite. Puisqueṭ
et les suivantsḍ
sont dyadiques, tous les appels pourṭ
passer l'argument implicite 0 comme argument correctṭ
. Le premier appel renvoie [0, 0] , le second [0, [0, 0] et les huitième et dernier [0, [0, [0, [0, [0, [0, [0, [0, 0]]]]]]]] .ḍ
est l' atome de divisibilité ; des arguments x et y , il renvoie 1 est x est divisible par y , 0 sinon.Ḅ
est un no-op pour les entiers, doncḍḄ
teste 0 pour la divisibilité par chaque entier du tableau construit. 0 est divisible par lui-même, nous obtenons donc [1, [1, [1, [1, [1, [1, [1, [1, [1, 1]]]]]]]]] .Maintenant, l' atome non binaire
Ḅ
fonctionne sur des tableaux plats. Pour une paire [a, b] , il retourne simplement 2a + b . Comme mentionné précédemment,Ḅ
est un no-op pour les entiers: un argument entier c est promu en [c] , et [c] dans n'importe quelle base est simplement c .Le premier appel à
Ḅ
réduire [1, 1] à 3 , donnant ainsi [1, [1, [1, [1, [1, [1, [1, [], 3]]]]]]] . Le prochain appel réduit [1, 3] à 5 , le suivant [1, 5] à 7 , et ainsi de suite jusqu’à ce que le neuvièmeḄ
renvoie 17 .Ṇ
est l' atome logique NOT logique et mappe l'argument implicite 0 à 1 .+
est l'atome d'addition, donc chacune des dix-huit copies d'+Ṇ
incrémenter la valeur de retour précédente (initialement 0 ). L'ensemble du programme revient donc 18 .C
est l' atome du complément et mappe son argument z à 1-z .N
est l' atome de négation et mappe son argument z sur -z . Ensemble,CN
mappe z sur - (1-z) = z-1 , de sorte que les dix-huit copies transforment l'argument implicite 0 en -18 . Une dernière application deC
rendements1 - (-18) = 19
.L' énumération atome
Ė
énumère les éléments dans un tableau, ce qui crée des paires valeur d'index. L'argument implicite 0 est promu à [0] , puisĖ
donne [[1, 0]] . L' atome non-décimal convertit un tableau plat de la base 10 en entier, ce qui donne [10] dans ce cas particulier.Le deuxième appel à
Ė
transformer [10] en [[1, 10]] , que le secondḌ
se transforme enfin en [20] .21 - 30
L' atome de queue
ṫ
(une dyade) sélectionne le postfixe de son argument de gauche qui commence à l'index (basé sur 1 et modulaire) spécifié dans son argument de droite, en promouvant un argument entier de gauche x à [x] . Lorsqu'il est appelé avec les deux arguments définis sur 0 ,ṫ
renvoie [0] .L' atome any et all
Ȧ
renvoie 1 si son argument est véridique et ne contient aucun zéros à aucune profondeur, 0 sinon. Ici, nous l'utilisons simplement comme fonction d'identité pour renvoyer l'argument implicite 0 . La scission atome diviseṣ
son argument de gauche [0] aux occurrences de son argument de droite 0. Elle renvoie donc [[], []] ici.L' atome d' index
J
supprime les éléments de la valeur de retour et les remplace par leurs indices, ce qui donne la plage [1, 2] dans ce cas particulier.Ȧ
et lesṫ
deux fonctionnent comme avant, ils réduisent donc [1, 2] au postfixe qui commence au dernier index, donnant [2] .Dans les liens niladiques, la constante
⁸
est vérifiée [] . C'est un nilad imparable, c'est-à-dire qu'il ne s'inscrit pas dans la chaîne. En conséquence, la valeur de retour précédente ( [2] ) est imprimée dans STDOUT, puis remplacée par la valeur du nilad ( [] ).Puisque [] est faux, le
Ȧ
transforme en 0 . L'J
atome promeut 0 à [0] , puis renvoie la liste de ses index ( [1] ), qui est imprimée implicitement à la fin du programme.Un autre littéral. Les représentants semblent être le meilleur endroit pour les utiliser.
Ceci utilise la compression de chaîne incorporée de Jelly. Les index de @ et ṃ dans la page de code de Jelly sont 64 et 220 et les littéraux de chaîne peuvent contenir 250 caractères différents. Le premier nombre calculé est donc 250 × 65 + 220 = 16470 .
16470 étant divisible par 3, le quotient 16470/3 = 5490 code un caractère imprimable ASCII ou un saut de ligne. Il y en a 96 et 5490 = 96 × 57 + 18 , ce qui signifie que nous avons décodé le caractère ASCII imprimable à l'index 18 à base 0 , qui est '2' .
Il nous reste 57 , qui est également divisible par 3 , donc le quotient 57/3 = 19 = 96 × 0 + 19 code un caractère ASCII imprimable à l’indice 18 basé sur 0 , qui est '3' .
Cela laisse 0 ; le processus de décodage s'arrête. Les caractères générés sont concaténés pour former "23"
L' atome factoriel
!
transforme l'argument implicite 0 en 1 . Deux invocations de l' atome inhaléḤ
transforment 1 en 2 , puis 2 en 4 . Enfin,!
calcule 4! = 24 .En l'absence d'arguments de ligne de commande, la constante
³
vaut 100 . Deux invocations desH
tours 100 à 50 , puis 50 à 25 .La constante
Øa
contient l'alphabet minuscule. L' atome maximalM
produit tous les indices d'éléments maximaux, et puisque z est la plus grande lettre minuscule, le résultat est [26] .Vingt-six exemplaires du concatenate atome
;
concaténer la valeur de retour initiale 0 et vingt-six cas de l'argument par défaut 0 , la construction d' un ensemble de 27 zéros.¬
est l' atome logique NOT ,;¬
ajoute donc un 1 au tableau de zéros. La prochaine¬
nie tous les éléments du tableau, nous laissant un tableau de 27 et 1 zéro.ḅ
est le unbase atome et convertit un tableau de chiffres à partir de son argument de gauche de la base spécifiée dans son argument de droite en entier.ḅ¬
convertit de unaire en entier, il effectue donc simplement une somme. Pour un tableau de 27, cela retourne 27 .L' indice d' atome
i
promeut son argument de gauche de 0 à [0] , puis trouve l'indice de son argument de droite 0 dans ce tableau, ce qui donne 1 .L' atome de portée
r
construit une gamme ascendante ou descendante de son argument de gauche à son argument de droite. Le bon argument est l’argument implicite 0 , ce qui donne [1, 0] . Une seconde invocation dei
trouve l'index de 0 dans [1, 0] , donnant 2 .ð
commence une nouvelle chaîne dyadique. Comme la chaîne précédente était niladique, les arguments gauche et droit de cette chaîne seront égaux à la valeur de retour de la première chaîne ( 2 ).c
dans les combinaisons atome. Avec l'argument gauche 8 et l'argument droit 2 , il compte toutes les 2 combinaisons uniques et non ordonnées d'un ensemble de 8 éléments, renvoyant 8C2 = 8! / (6! 2!) = 28 .La constante
⁶
contient un caractère d'espacement et définit l'argument et la valeur renvoyée sur '' . Le mot atomeḲ
promeut le caractère "" dans la chaîne de singleton "" et le divise en espaces, donnant [[], []] .L' atome de groupe
Ġ
regroupe tous les indices d'éléments égaux. Puisque les deux éléments de la dernière valeur de retour sont égaux, il renvoie ici [[1, 2]] . L' atome minimum extrait un élément minimal (le seul) de ce tableau, donnant [1, 2] .Le degré atome
°
convertit les deux nombres entiers du degré sexagésimal en radians, donnant 1 ° × 2π / 360 ° = π / 180 et 2 ° × 2π / 360 ° = π / 90 . L' atome inverse prend les inverses multiplicatifs, ce qui donne 180 / π ≈ 57,3 et 90 / π ≈ 28,6 .Ensuite,
Ṃ
une fois de plus prend le minimum, donnant 28,6 . Enfin, l’ atome de ceilĊ
transforme 28,6 en 29 .L' atome d' identité
¹
renvoie 0 pour l'argument implicite 0 . La division autour de l' atomeœṡ
promeut ses deux arguments (les deux 0 ) à [0] , puis divise [0] autour des sous-réseaux contigus égaux à [0] . Cela donne [[], []] .L' atome de la fenêtre glissante
Ẇ
construit tous les sous-tableaux contigus de son argument. La première instance transforme [[], []] en [[[]], [[]], [[], []]] , la deuxième instance transforme [[[]], [[]], [[] , []]] en[[[]]], [[[]]], [[[], []]], [[[]], [[]], [[]], [ [], []]], [[[]], [[]], [[], []]] .
L' atome de vérité
T
répertorie tous les indices d'éléments de vérité. Aucun des tableaux du premier niveau n'est vide, donc cela donne [1, 2, 3, 4, 5, 6] . L' atome supérieurU
renverse ce tableau, donnant [6, 5, 4, 3, 2, 1] .Quatre copies de l' atome de pop
Ṗ
suppriment les quatre derniers éléments, nous laissant avec [6, 5] . Enfin, l’ atome de produitP
transforme ce tableau en 30 .31 - 40
ȷ
est un raccourci pour 1 × 10 3 = 1000 . L' atome de racine carrée½
donne 31,6 , que l' atome de distanceR
transforme en [1,…, 31] . Enfin, l’ atome de queueṪ
extrait le dernier élément et renvoie 31 .L' atome de longueur
L
favorise l'argument implicite 0 à [0] , puis prend la longueur pour donner 1 .µ
démarre une nouvelle chaîne monadique et le résultat 1 devient son argument.Pour les arguments x et y , l’ atome de divmod
d
donne [x / y, x% y] . Chaque appel aura y = 1 , ainsi le résultat sera toujours [x, 0] .Le premier appel commence par x = 1 et donne [1, 0] .
d
ne fonctionne que sur des entiers, il est donc vectorisé lors des appels suivants. Le deuxième appel donne [[1, 0], [0, 0]] , le troisième [[[1, 0], [0, 0]], [[0, 0], [0, 0]]] , et le cinquième et dernier un tableau de profondeur 5 contenant un seul et 31 zéros.µ
Une fois de plus, une nouvelle chaîne monadique commence et le tableau précédent devient son argument. L' atome platF
cache ce tableau, donnant un tableau plat de 31 zéros. Enfin,L
prend la longueur du résultat, retournant 32 .Un autre représentant, un autre littéral.
Chaque instance de l' atome intégré transforme son argument z en [z] . Avec la valeur de retour initiale de 0 , toutes les 34 occurrences ensemble donnent [[[[[[[[[[[[[[[[[[[[[[[[[[]]] ]]]]]]]]]]]]]]]]]]]]]]]]]]]] . Enfin, l' atome de profondeur
ŒḊ
calcule la profondeur maximale du tableau résultant, renvoyant 34 .La fenêtre existe Atom
ẇ
valorise ses deux arguments (les deux valeurs par défaut étant 0 ) à [0] , puis teste si ** [0] ** apparaît sous la forme d'une sous-matrice contiguë de [0] . C'est le cas, doncẇ
renvoie 1 .ɓ
commence une nouvelle chaîne dyadique. Comme la chaîne précédente était niladique, les arguments gauche et droit de cette chaîne seront égaux à la valeur de retour de la première chaîne ( 1 ). La chaîne utilise deux atomes dyadiques différents: bitshift left (æ«
) et bitwise OR (|
).Une chaîne dyadique qui commence par trois dyades ou plus appelle initialement la première dyade avec les arguments de la chaîne. Ici, cela donne 1 << 1 = 2 . Les six dyades suivantes sont regroupées par paires (appelées fourches ). La dyade la plus à droite est appelée en premier avec les arguments de la chaîne, puis la plus à gauche est appelée avec les valeurs de retour précédentes des deux côtés.
Pour
æ«æ«
, on obtient 2 << (1 << 1) = 2 << 2 = 8 . Ensuite,æ«æ«
calcule 8 << (1 << 1) = 8 << 2 = 32 . Maintenant,|æ«
nous obtient 32 | (1 << 1) = 32 | 2 = 34 .Enfin, la fin se
|
comporte comme un crochet et est appelée avec la valeur de retour précédente comme argument de gauche et l'argument de droite de la chaîne comme argument de droite. Ceci retourne 34 | 1 = 35 .En l'absence d'un second argument, la constante
⁹
vaut 256 . L' atome inverse favorise 256 au tableau [2, 5, 6] et l'inverse pour donner [6, 5, 2] . Ensuite, l’ atome de têteḢ
extrait le premier élément et l’ atome carré²
renvoie ** 6² = 36 *.L' incrément atome
‘
incrémente son argument par 1 , donc‘‘‘
tourner à la valeur de retour initiale 0 à 3 . Le 0 suivant est un nilad imparable, c’est-à-dire qu’il ne rentre pas dans la chaîne. En conséquence, la valeur de retour précédente ( 3 ) est imprimée dans STDOUT, puis remplacée par la valeur du nilad ( 0 ).Les 7 copies suivantes de
‘
tournent ce 0 en 7 , qui est imprimé implicitement à la fin du programme.Le décrément atome
’
décrémente son argument par 1 , donc trente-huit copies tourner la valeur de retour initiale 0 à -38 . L' atome de différence absolueạ
calcule la différence non signée entre -38 et l'argument implicite 0 , renvoyant 38 .-
est un raccourci pour -1 et définit l'argument du lien et la valeur renvoyée à -1 . Chacun_
est une instance de l' atome de soustraction dyadique , dont l'argument de droite est défini par défaut sur -1 s'il est manquant.Tout d'abord,
-____-
calcule (-1) - (-1) - (-1) - (-1) - (-1) = 3 . Le -1 suivant est un nilad imparable. La valeur de retour précédente ( 3 ) est donc imprimée sur STDOUT, puis remplacée par la valeur du nilad ( -1 ).Ensuite,
-_
calcule (-1) - (-1) = 0 , où le littéral-
définit l' argument de gauche de_
et utilise la valeur de retour comme valeur de droite. Les neuf copies suivantes de_
soustraient l'argument par défaut -1 de la valeur de retour, ce qui donne 9 , qui est imprimé implicitement à la fin du programme.”(
est un caractère littéral et l' atome ordinalO
recherche son point de code Unicode, ce qui donne 40 .41 - 47
En l'absence d'un troisième argument de ligne de commande, la constante
⁵
vaut 10 . L' atome unlengthḶ
crée une plage basée sur 0, en particulier [0,…, 9] pour l'argument 10 , des deux côtés de l' atome de répétition sur placex
. Ce dernier fait correspondre les éléments de son argument de gauche avec les répétitions de son argument de droite et répète chacun des éléments le nombre de fois correspondant. Avec [0,…, 9] comme argument à gauche et à droite, nous obtenons donc zéro zéro, un un, deux deux, etc.L' index en atome
ị
extrait l'élément de son argument de droite à l'index spécifié dans son argument de gauche. Avec l'argument gauche 10 (⁵
à sa gauche) et l'argument droit [1, 2, 2, 3, 3, 3, 4, 4, 4, 4,…, 9] (résultat précédent), cela donne 4 .La chaîne jusqu'à ce point est suivie d'un nilad imparable
⁵
. La valeur de retour précédente ( 4 ) est donc imprimée sur STDOUT. La valeur de retour est définie sur 10 et le reste de la chaîne est analysé comme d'habitude.Comme précédemment, vous
⁵ḶxḶ
obtiendrez le tableau [1, 2, 2, 3, 3, 3, 4, 4, 4,…, 9] . Cette fois, nous appelons l' atome triéṢ
sur l'argument 10 , qui promeut 10 à [1, 0] , puis le trie pour obtenir [0, 1] . L' atome de tête dyadique récupère maintenant les préfixes de longueur 0 et 1 du résultat à gauche, nous laissant avec [[], [1]] . Une fois imprimé, seul 1 restera visible.⁽
et ses deux caractères suivants constituent un littéral numérique. Si j et k sont leurs points de code dans la page de code de Jelly et (j, k) <(124, 250) , on obtient le nombre entier 1001 + 250j + k . Les points de code de '{' , '}' et 'ʂ' sont 123 , 125 et 167 ; le littéral gauche est donc évalué à 1001 + 250 × 123 + 167 (= 31918) , tandis que celui de droite est évalué à 1001 + 250 x 123 + 125 (= 31876) .Puisque le nombre entier gauche est inférieur au double de celui de droite, le résultat est (… + 167)% (… + 125) = (… + 167) - (… + 125) = 167-125 = 42 .
L' atome shuffle
Ẋ
randomise l'ordre des éléments de son argument; un argument numérique z est préalablement promu dans la plage [1,…, z] . Pour l'argument implicite 0 , cette plage est vide etẊ
donne [] . L' atome toutẠ
retourne 1 si tous les éléments de son argument sont vrais, 0 sinon. Puisqu'un tableau vide ne contient pas d'éléments faussement,Ạ
retourne 1 ici.Le zip avec atome
ż
(une dyade) prend les arguments x et y et transpose la paire [x, y] . Pour les entiers x et y , ceci donne simplement [[x, y]] , donc ce particulierż
, appelé avec les arguments 1 et 0 (l'argument implicite), renvoie [[1, 0]] . L' atome d' évaluation dyadicv
transforme tous les tableaux plats (contenant uniquement des nombres et des caractères) de l'argument de gauche en chaînes, puis évalue les chaînes résultantes en programmes monadiques Jelly avec son argument de droite en tant qu'arguments des programmes. Depuis ["10"]se compose uniquement de littéraux, ceci ignore le bon argument dev
et aboutit simplement à [10] .La copie se
©
joint rapidementv
et copie son résultat dans le registre. Les occurrences ultérieures de l' atome de rappel®
(un nilad) extrairont [10] du registre.Les trois copies suivantes de
żv
travail fonctionnent comme précédemment, mappant [10] à [[10, 0] à [100] à… à [10000] . L' atome d' ordreọ
teste le nombre de fois que son argument de gauche est divisible par son argument de droite; il calcule donc ici l'ordre de 10 (recherché avec®
) dans 10000 = 10 4 , ce qui donne [4] .Ce qui suit
®
est un nilad imparable. La valeur de retour précédente ( [4] ) est donc imprimée sur STDOUT, puis remplacée par la valeur du nilad ( 10 ). Nous appliquonsẠ
ensuite, donnant 1 . (Ceci est nécessaire car un nilad suivi d'une dyade serait analysable à ce stade.)Comme auparavant,
żvżvżv
ajoute trois zéros à la valeur de retour actuelle en transformant 1 en [1000] . Enfin,ọ®
calcule l’ordre de 10 sur 1000 = 10 3 et 3 est imprimé sur STDOUT à la fin du programme.Encore un autre repdigit, encore un autre littéral.
D'abord et avant tout, le littéral
111111
définit l'argument et la valeur de retour initiale sur 111111 . Les autres exécutions1
sont aussi littérales.l
est l' atome du logarithme qui calcule le logarithme de son argument de gauche à la base spécifiée dans celui de droite. Lorsqu'il est appelé le 111111 avec le bon argument 11 , nous obtenons le log 11 111111 ≈ 4.85 .Le mot atome
K
joint un argument de liste au niveau d'espaces, après la promotion d'un caractère numérique / caractère z en [z] . Ici, nous l'utilisons simplement pour transformer l'argument du lien 111111 en [111111] . (Nous n'avons pas besoin d'un tableau ici, mais nous n'avons plus d'atomes d'identité.) L' atome AND au niveau du bit&
prend les valeurs de retour des deux côtés, les convertit en entier si nécessaire et calcule leur AND au niveau du bit. Dans ce cas particulier, elle renvoie [4.85 & 111111] = [4 & 111111] = [4] .Ce qui suit
1111111
est un nilad imparable. La valeur de retour précédente ( [4] ) est donc imprimée sur STDOUT, puis remplacée par la valeur du nilad ( 1111111 ).K
transforme ensuite cet entier en [1111111] . (Ceci n'est encore une fois pas vraiment nécessaire, mais un nilad suivi d'une dyade serait analysable à ce stade.)Comme auparavant,
l11
calcule log 11 1111111 ≈ 5,81 , puis&
renvoie [5.81 & 111111] = [5 & 111111] = [5] .C'est le seul programme composé de plusieurs liens définis par l'utilisateur. Le dernier lien est le lien principal et s’exécute au démarrage du programme, les autres sont des liens d’assistance. Le rapide
Ç
fait toujours référence au lien au-dessus du lien actuel et l'exécute de façon monadique. De même, le raccourciÑ
fait toujours référence au lien situé en dessous du lien actuel (en boucle) et l'exécute également monadiquement.Le lien supérieur est constitué de l’ atome de la paire
,
- une dyade transformant les arguments x et y en [x, y] - et un atome de sommeS
- un monade qui promeut un argument entier z en [z] et réduit un argument de tableau par addition. Lorsque le lien,SS
est appelé avec un argument entier n , il calcule [n, n] = [n, n] = 2n .Le chaînon intermédiaire comprend les atomes ci-dessus, le rapide susmentionné
Ç
et l' atome insignifiantỊ
- une monade qui donne 1 pour les arguments numériques z avec -1 ≤ z ≤ 1 , mais 0 pour tous les autres. En appliquantỊ
deux fois un entier, l'argument n le remplace essentiellement par 1 , car la sortie du premierỊ
(l' entrée du second) est toujours non significative. Ce résultat est ensuite associé à la valeur de retour deÇ
(appelé avec l'argument n ) et la paire résultante est réduite deS
. Au total, nous calculonsΣ [(| n | ≤ 1) ≤ 1, 2n] = Σ [1, 2n] = 2n + 1 .Avec ces deux liens auxiliaires en place, le lien principal peut désormais construire tout entier non négatif en consultant ses chiffres binaires. Avec une valeur de retour initiale de 0 , la chaîne
ÇÑÇÇÇÑ
calcule le résultat final (((((0 × 2 + 1) × 2) × 2 + 1) × 2 + 1) × 2 + 1) × 2 = ((5 × 2 + 1) × 2 + 1) × 2 = 46 .le prochain atome premier trouve le plus petit nombre premier positif strictement supérieur à son argument. Avec la valeur de retour initiale 0 , quinze invocations
Æn
calculent le quinzième nombre premier, qui est 47 .la source
brainfuck , score 2,
25514410 octets... Ouais, pas la meilleure idée car je n'ai que 8 personnages (les tarpits vont tarpit) avec qui travailler mais voyons ce qu'il est possible de faire.
Je pense que c'est tout ce qui est possible. : PCette réponse montre six des huit personnages utilisés par le brainfuck, les deux autres étant,
entrée et la.
sortie.Visualisez-le en ligne!
Explication
Chaque numéro est créé et stocké dans la cellule de départ sur la bande. Repose fortement sur les cellules d’emballage, qui ne sont pas implémentées dans quelques interprètes.
1 :
2 :
la source
Neim , score 38, 327 octets
Explication:
0
.ℂ
vérifie 0 et 0 pour la co-primalité, ce qu’ils sont. Cela pousse 1. Ensuite, nous obtenons le premier nombre premier𝐋
, ce qui donne une liste de singleton contenant seulement 2. Nous obtenons ensuite le plus grand élément (𝐠
), qui donne 2 comme nombre. Ensuite, nous répétons ce processus jusqu'à ce que nous obtenions la liste[2 3 5 7 11]
. Après cela, nous utilisons𝐝
pour calculer les deltas, ce qui donne la liste[1 2 2 4]
. Ensuite, nous utilisons𝐬
pour obtenir la somme - qui est 9 - puis nous calculons une plage exclusive de 0 à 9, ce qui donne[0 1 2 3 4 5 6 7 8]
. Enfin,𝐬
est utilisé à nouveau pour obtenir 37.α
est une constante qui représente une valeur négative et que nous poussons et soustractons à plusieurs reprises (exploitant à nouveau le fait que lorsque nous essayons d'afficher une entrée vide, 0 est poussé)Peut être essayé ici
la source
all characters must be encoded using a single byte in the language you choose
. Neim encode-t-il ces caractères spéciaux dans un seul octet? Comment?1
. Vous pouvez sûrement mettre cela à profit?Python 2, 15
Voici un début, cherchez plus
Merci à Léo dont le pourboire m'a aidé à atteindre 15
la source
-~-~-~-~-~-~-~-~-~[[]==[]][[]<[]]
pour 10 et0xD
13 pour un nombre d'octets total inférieur''is''
vrai pour créer un autre nombre?((()<((),))|(()<((),))<<(()<((),))|(()<((),))<<(()<((),))<<(()<((),)))<<(()<((),))
string.printable
:c, j, k, l, s, v, w, y, z, A, B, C, D, E, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, !, #, $, &, ., :, ?, @, \\, `, {, }, \t, \r, \x0b, \x0c
Japt , 448 octets, score 42
Une grande collaboration entre Shaggy , ETHproductions et Oliver .
Ces caractères (utiles) sont laissés:
Des explications
Quelques choses à savoir sur Japt avant de commencer, que j'ai utilisées fréquemment. Tout d'abord, Japt dispose de 6 variables réservées à la saisie, les majuscules
U-Z
. Si aucune entrée n'est transmise via ces variables, elles sont toutes définies par défaut0
. La deuxième chose est couverte dans cette astuce .Cliquez sur un extrait pour l'essayer dans l' interprète en ligne .
Appliquée à un nombre, la
v
méthode prend un entier n comme argument et renvoie 1 si le nombre est divisible par n , 0 sinon. Si n n'est pas fourni, la valeur par défaut est 2 . 0 (la valeur par défaut pourU
) est divisible par 2 , ce qui nous donne notre 1 .Très semblable au premier. Appliquée à un nombre, la
y
méthode prend un entier n comme argument et renvoie le GCD des deux nombres. Si n n'est pas fourni, la valeur par défaut est 2 . Puisque 0 est divisible par 2 , GCD (0, 2) nous donne notre 2 .Í
est le raccourci pourn(2)
ou2
-this
. Parce que nous avons pas d' entrée, nous avons par défautthis
à0
, ce qui entraîne2-0 = 2
.à
retourne le nombre de combinaisons de[1...this]
, ce qui retourne 3Q
La valeur par défaut est un guillemet simple.i
sur une chaîne insère une autre chaîne au début; comme expliqué dans # 3 , chacuniiii)
est équivalent à.i("i".i("i"))
JS, insérant ainsi deux copies dei
au début de la chaîne. Faites ceci deux fois et vous avez la chaîneiiii"
.âQ
simule ensuite.search(Q)
, en donnant l’indice du premier"
dans la chaîne, qui est 4 .H
est la constante pour 32 . Appliquée à un nombre, laq
méthode, qui prend pour argument l' entier n , renvoie la n- ème racine de ce nombre. Si n n'est pas fourni, la valeur par défaut est 2 ,Hq
nous donne donc la racine carrée de 32 qui est approximativement 5,6568 .Â
est le raccourci pour~~
, qui planifie le résultat, nous donnant 5 .L
est préréglé sur 100 etÁ
constitue le raccourci pour>>>
(décalage à droite bit par bit).100>>>100
est le même que100>>>4
(l'opérande de droite enveloppe le mod 32), qui est 6 .Comme indiqué précédemment, la valeur par
V
défaut est 0 .´
est le raccourci pour l'--
opérateur, donc le code est équivalent au JS suivant:X.n(Y)
est équivalent à Y - X ou -X + Y ; le premier--V
retourne -1 , et le second -2 , donc c'est à peu près équivalent à - (- 1) + (- (- 2) + (- (- 2) + - (- 2))) . En simplifiant, on obtient 1 + 2 + 2 + 2 = 7 .Littéralement, 8 et 9 .
Ce sont les constantes pour 10 - 16 inclus.
J
est préréglé sur -1 . L’interprète Japt parvient à l’analyser correctement en tant que(J--) - (--J) - (--J) - (--J) - (--J)
. En faisant un peu plus de calcul, nous trouvons que cela équivaut à (-1) - (-3) - (-4) - (-5) - (-6) , ou -1 + 3 + 4 + 5 + 6 = 17 .¾
est, comme vous pouvez le deviner, un raccourci pour.75
. Nous mettons 24 copies de 0.75 dans un tableau, puis sommeons avecx
, donnant 0.75 * 24 = 18 .Je pense que c'est mon préféré.
;
au début du programme change les valeurs de certaines des constantes Japt; sans elle,I
c'est 64 , mais avec elle,I
c'est 91 .ìw
le convertit en une liste de chiffres et s’exécutew
sur la liste en inversant le tableau, puis reconvertit en un nombre pour nous en obtenir 19 .½
est un raccourci pour.5
.e
sur un nombre x prend un argument y et retourne x * 10 y . Donc, la chaîne de calculs qui se produit est la suivante:Et la finale
~~
sert à obtenir un nombre entier, ce qui donne notre résultat de 20 .T
est préréglé à 0 .++
est l'opérateur d'incrémentation dans JS et également dans Japt;T+++T
est analysé comme(T++) + T
, mais++T+++T
est analysé comme(++T) + (++T)
, cela équivaut donc au code JSLe résultat est 1 + 2 + 3 + 4 + 5 + 6 , soit un total de 21 .
Un littéral 22 .
Ä
est un raccourci pour+1
, alors cela résume simplement 231
s.Ceci trouve le nombre de permutations de
[1, 2, 3, 4]
, qui est 4! = 24 .²
est un raccourci pourp2
, qui élève un nombre à la puissance de deux. 5 ** 2 est 25 .°
est un raccourci pour l'++
opérateur, ou si elle ne peut pas être analysé en tant que tel,+ +
. Comme indiqué précédemment, lorsqu'il n'y a pas d'entrée, la valeur parU
défaut est 0 . Donc, le code est équivalent à(++U), (U++) + + (++U) + + (++U) + + (++U) + + (++U) + + (++U)
, ce qui est très similaire au # 17 : ilU
est d'abord incrémenté1
, puis incrémenté de manière répétée et ajouté de manière à ce que le résultat final soit 1 + 3 + 4 + 5 + 6 + 7 = 26 .³
est le raccourci pour lap
méthode avec un argument de 3 . Toutefois, si une lettre minuscule apparaît directement après une parenthèse gauche (»
correspond au raccourci((
), elle devient une chaîne. Cela permet de le transmettre à une méthode et de l’appeler en tant que fonction (c’estm³
-à- dire que mapper par.p(3)
). Dans ce cas, cependant,("p",3)
retourne notre3
, puis nous l’élevons à la puissance de3
(p
c’est la méthode de puissance appliquée à un nombre), ce qui nous donne notre 27 .¼
, comme vous le savez probablement maintenant, est un raccourci pour.25
, donc cela calcule 7 / 0.25 = 28 .Tout ce qui est entouré de
$
symboles est traité comme du pur JavaScript. Nous avons donc une chaîne de 29 caractères de soulignement suivis de ab
. (Sans le$
,'
serait une chaîne à caractère unique.) Lab
méthode appliquée à une chaîne renvoie le premier index de son argument dans cette chaîne. Comme expliqué au point 3 , le dernierb
est converti en chaîne. Nous saisissons donc le premier index deb
notre chaîne, qui est 29 .µ
est un raccourci pour-=
, etÉ
pour-1
. L'effet soustrait 30 copies de -1 à 0 , ce qui donne 30 .Très bien comme # 29. La
a
méthode, lorsqu'elle est appliquée à une chaîne, renvoie le dernier index de son argument dans cette chaîne. En utilisant l'indexation 0, le dernier index d'a
une chaîne de 32a
secondes est 31 .S
est prédéfini dans un seul espace et,c
sur une chaîne à un seul caractère, renvoie son code, ce qui donne 32 .Littéral 33 .
MgN
renvoie le numéro Nth de Fibonacci.011
est 9 en octal; le 9ème numéro de Fibonacci est 34 .#
renvoie le code de caractère du caractère suivant. Le code de caractère#
lui - même se trouve être 35 , rendant notre travail ici particulièrement facile.p
est une exponentiation, et sans second argument, la valeur par défaut est 2 ; ainsi, cela imprime 6 ** 2 = 36 .Celui-ci est plutôt délicat.
R
utilise par défaut un seul caractère de nouvelle ligne (le fait qu’il s’agisse d’une nouvelle ligne devient important ultérieurement).í
sur une chaîne, sans aucun argument, prend chaque caractère et ajoute son index: une transformation plutôt inutile, mais le résultat en 5 itérations est le suivant: (utiliser à laR
place d'un retour à la ligne littéral)Ce qui est intéressant, c'est que chaque entrée est simplement un préfixe du suivant ... Mais de toute façon, la dernière partie
è.
, compte le nombre de/./g
correspondances trouvées dans le résultat. Il y a 38 caractères dans la chaîne; cependant, puisque/./g
seuls les caractères non-newline correspondent, le résultat est 37 .Les Backticks marquent une chaîne compressée et se
¥
décompressent enll
.l
sur une corde donnel
ength, donc après décompression, cela donne 38 .Oooh garçon, celui-ci est un doozy. Tout d'abord, nous générons
true
avec¨N
(¨
signifie pour>=
, etN
avec aucune entrée est le tableau vide), puis convertissons cela en1
avec|N
. À partir de là, ça devient assez fou:(Les
¹
s ne sont que des substituts pour les proches parents et ont été omis.) La finaleo
apparaît et renvoie le dernier élément du tableau, donnant 39 .Principalement le même truc que avec # 3 .
¤
est le raccourci pour las
méthode avec un argument de 2 . Dans ce cas, cependant, le code transpilé est(("s", 2).s(2) * (("s", 2) * (("s", 2))))
, ou simplifié(2).s(2) * (2 * 2)
..s(2)
renvoie le nombre sous forme de chaîne en base 2, ce qui donne"10"
;* (2 * 2)
convertit implicitement cela en un nombre et multiplie par 4 , donnant 40 .Semblable à la précédente.
Å
est le raccourci pour las
méthode avec un argument de 1 . Dans ce cas, cependant, chaque(Å
copie("s", 1)
, qui ne retourne que 1 .1<<1<<1<<1<<1<<1
est 32 et1<<1<<1<<1
est 8 ; ceux-ci sont combinés avec1
pour obtenir 41 .±
est un raccourci pour+=
, et¶
pour===
. Cela signifie que le code est réellementY===Y
est toujours vrai, nous pouvons donc simplifier ceci:0 + 1 = 1 ; 1 + 1 = 2 ; 2 + (2 + 1) = 5 ; 5 + 5 = 10 ; 10 + (10 + 1) = 21 ; 21 + 21 = 42 .
la source
Iq
pour que 8 rentrent8
, vous devez trouver autre chose pour 19 cependant.q
pour5
me permettrel
d'ajouter un nombre supplémentaire. Travailler sur une alternative pour2
que je puisse avoir le=
dos.(¤
pour 2.L>>L
peut libérer 6.#w s Å
peut libérer;
etI
#
pour 21 ans.*
et^
PHP, score 17, 130 octets
caractères utilisés
ADEFGIKLMOPRSTVXYZ=_![]()<>'"#$,;/-+*|^&0123456789afhnprstwx
1 constante booléenne Z (non définie) égale constante Z
2 FTP_MOREDATA est une constante en PHP avec la valeur 2
3 bits et caractères; et W
4 bitwise Décalage à gauche et logique non converti tableau vide sur booléen true avec est converti en entier 1 à travers l'opérateur de décalage gauche
7 bitwise Ou caractères # et $ et 1
9 SIGKILL est une constante en PHP avec la valeur 9
10 bitwise Shift right chaque étape est une division entière avec 8 donc nous avons les étapes 333333, 41666, 5208, 651, 81, 10
13 caractères X dans la chaîne X ... depuis le début
15 valeur hexadécimale f = 15
17 bits au format Xor avec les chaînes ha et YV
Tous les extraits sont des éléments dans un tableau
Essayez-le en ligne!
PHP, score 16, 94 octets
caractères utilisés
AEIMPRTUZeflnrstvwx^_&|()[]=!.*+/-<>$":0123456789
1 constante booléenne Z (non définie) égale constante Z
2 bitwise et caractères: et w
3 Pi converti en valeur entière par un tableau vide converti à zéro
7 caractères binaires xor A et v
10 variable $ s non définie! $ S = une concat avec une longueur de chaîne de la variable $ s
13 111/2 = 55/2 = 27/2 = 13 divisions entières au niveau du bit
15 valeur hexadécimale f = 15
Tous les extraits sont des éléments dans un tableau
Essayez-le en ligne!
PHP, score 14, 84 octets
caractères utilisés
$!_^[]()%/+~-=AEILMNPRUZ0123456789delnrstx
1 constante booléenne Z (non définie) égale constante Z
3 Pi converti en valeur entière par un tableau vide converti à zéro
7 ERA est une constante avec la valeur 131116 mod 11 = 7
10 variable $ s non définie! $ S = une concat avec une longueur de chaîne de la variable $ s égale à zéro
13 valeur hexadécimale d = 13 14 au niveau du bit pas et signe moins élever NULL à 14
Tous les extraits sont des éléments dans un tableau
Essayez-le en ligne!
la source
R, score
1314Vous en avez un supplémentaire grâce à user2390246.
Caractères utilisés:
0123456789acemqrstuvxDFT^=";-/+()$
la source
F^F
2"n"%in%"n"+"n"%in%"n"
:; 3-9: Chiffres, 10:1e1
, 11:22/2
, 12:T--T--T--T...
, 13:0xD
, 14:sum(mtcars$vs)
%
et réflexion sur l’utilisation de jeux de données intégrés. Je ne vois pas pourquoi ça ne serait pas bien.dataset['A','B']
, à condition qu’il évite de superposer les lettres déjà utilisées contenir une valeur utile!). Malheureusement, d'après ce que je peux voir rapidement, tous les jeux de données avec des lignes nommées contiennent la lettre i, ce qui rend leur utilisation impossible%in%
.q=""=="";q+q
. Cela libérerait l'utilisation des lettresi
etn
. Vous n'avez pas le temps de regarder maintenant, mais je parie qu'il y en a un supplémentaire quelque part ...MATL , score
212223 numéros (273 octets)Merci à J Doe pour avoir passé de 22 à 23 numéros!
Essayez-le en ligne! Chaque extrait de code dans le lien se termine par
D
(affichage) ou]D
(boucle explicitement et affichage) pour effacer la pile et ainsi isoler de l'extrait suivant.Explication
Poussez
0
. Nier. Donnetrue
, qui est affiché comme1
.Poussez la chaîne
'bd'
. Différence consécutive entre les points de code des personnages.Push tableau de cellules contenant le nombre
pi
. Convertir en tableau numérique (c.-à-d. En un seul nombre). Arrondir vers le bas.Poussez
2
deux fois. Puissance.Littéral numérique.
Littéral numérique.
Littéral numérique.
Littéral numérique.
Littéral numérique.
Poussez
3
. Poussez3.333333333333333
. Multiplier. Cela donne une précision en virgule flottante10
.Littéral numérique.
Poussez
3
. Multiplier par2
deux.Push
[6]
(qui est le même que6
). Calculer n- prime.Poussez
1
14 fois. Nombre d'éléments dans la pile. Effacer le reste de la pile.Poussez
4
. Carré. Faire de même. Any: donne1
. Soustraire.Poussez
4
.2
élevé à cela.Push array
[false false ... false]
(17 fois). Nombre d'éléments dans le tableau.Push array
[true true ... true]
(18 fois). Somme du tableau.Appuyez sur 19 nombres aléatoires pris dans l'intervalle (0,1). Concaténer horizontalement 18 fois. Nombre d'éléments non nuls dans un tableau.
Poussez
0
20 fois. Concaténez le contenu de la pile verticalement (donne un vecteur colonne). Taille: donne le tableau[20 1]
. Maximum de tableau.Appuyez sur
1j
(unité imaginaire) 21 fois. Ajouter 20 fois. Diviser par1j
.Littéral numérique
Do ... while loop (
`
) avec fin implicite. Dans la première itération, il pousse l'index d'itération (@
) et l'incrémenteQ
22 fois, ce qui donne23
. La condition de boucle (@@<
) étant fausse, la boucle est abandonnée.Quelques idées d'amélioration
(espace) dans l'extrait 10 pourrait être remplacé par
|
X>
dans l'extrait 20 pourrait être remplacé parp
, libérant ainsi le préfixeX
.:
,A
la source
Vim 8 sur Windows, score 13, 104 octets
^{keystroke}
représente<C-{keystroke}>
, tel^X
est<C-x>
, sauf pour^@
qui est<C-j>
. J'essaie toujours d'ajouter plus de numéros à cette liste et<CR>
représente un saut de ligne.Remarque: pour exécuter ces commandes, démarrez vim en utilisant
-u NONE -U NONE
. Ceci permet de s’assurer que vos configurations n’interféreront pas avec le code.Les extraits 1 à 10 commencent en mode insertion. Tandis que les extraits 12 et 13 démarrent en mode normal.
Des explications
Le fragment 8 est
:^R=&ts^@
. Je tiens à remercier @ L3viathan pour cette proposition et @ nmjcman101 pour avoir suggéré^@
de remplacer le saut de ligne et @ ØrjanJohansen pour une réduction&tabstop
de&ts
.&ts
évalue ensuite la taille de l'onglet, qui est par défaut à 8, et cette valeur est insérée dans l'éditeur.Snippet 10 est
8^O^A^O^A
. Nous insérons un 8, puis l'incrémentons deux fois pour obtenir 10.Snippet 11 est
0^[^X^X^X^X^X^X^X^X^X^X^X0x
. Nous écrivons un 0 et le décrémentons 11 fois pour obtenir -11. Ensuite, nous supprimons le moins pour obtenir 11.Le fragment 12 est
:h<CR>wwwwwwwwwwwy$:q<CR>p
. Cela ouvre le menu d'aide de Vim 8, qui contient les informations suivantes:Et la séquence de
w
déplacement du s à 12, à quel pointy$
copie le nombre. Ensuite, il est collé dans l'éditeur à l'aide dep
.Snippet 13 est
grgKjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjYZZvPWWWllld|llD
grâce à @DJMcMayhem pour l'avoir proposé. Cela ne fonctionne que sous Windows. L'extrait recherche dans le menu d'aide les commandes commençant parg
. Ensuite, il descend en utilisantj
pour arriver à cette ligne:après quoi il le copie et le colle dans le tampon. Après cela, tout sauf le 13 est retiré du tampon.
la source
^R=&tabstop+&tabstop+&tabstop<CR>P
donnerait les 12, ou est<CR>
déjà utilisé à cause de^M
?<CR>
quand j'ai dit^M
, mais merci, je vais examiner la^M
possibilité de supprimer l' extrait du snippet 8 maintenant :)0x01
alors que Ctrl + X donne0x18
. Et clairement, ces deux octets sont séparés. Cela a-t-il du sens?-u NONE -U NONE
,&tabstop
évalue à 8. Alors, j'ai échangé cela avec l'extrait 8 avec quelques modifications, merci :)Mathematica, score 13
la source
⌊⌋⌈⌉
éléments d'un octet chacun ...⌊⌋⌈⌉
en nous transformant⌊E⌋
enFloor@GoldenRatio
,⌈Pi⌉
en4
,LucasL@4
en7
et77/7
en22/2
. Il est probablement possible d'aller au moins un pas plus loin en appliquant une fonction avec//
05AB1E , Score 18, 67 octets
Essayez-le en ligne!
la source
A'ok
:)„((Ç;¬
=20.0
(caractère à deux octets "(("; aux valeurs ordinales ; divise par deux; prend la queue);₁.²₁P₃/ï
=21
(log-2 de 256; multiplié par 256; divisé par 95; sans décimales supprimées);₂Ågttγć
=22
(26ème session de Lucas; deux fois racine carrée; divisée en plusieurs parties égales; tête extraite). Les deux dernières étaient des essais et des erreurs ..;)PingPong , score 127
Dans PingPong, chaque caractère a sa propre valeur numérique distincte, ce qui rend le décompte allant jusqu'à 127 jusqu'à une tâche triviale. Le langage fonctionne en lisant la valeur de chaque caractère et en le poussant au sommet d'une pile, où toutes les opérations sont effectuées. Théoriquement, PingPong peut aller au-delà de 127, mais il faudrait passer un bloc de caractères qui apparaissent simplement sous la forme d'espaces dans un éditeur de texte; je les ai donc laissés en dehors de ma solution.
la source
Octave, Score 14, 74 octets
Je suis presque sûr que je suis proche de la limite maintenant.
Nous avons dû retirer
strchr
depuis que je l' ai déjàc
en nombre 10. J'ai encorej
,^
,=
,!
, espace et tabulation horizontale (ASCII-9) à gauche, de sorte qu'il pourrait être possible de presser un plus.Onglet horizontal peut être utilisé comme un espace, donc l'astuce utilisée avec
strchr
etnnz
peut être utilisée une fois de plus. Les seules lettres minuscules qui restent sontabdfgjkmoquvwxy
. Il n'y a pas beaucoup de fonctions que l'on peut en tirer.mod
pourrait fonctionner, mais cela ne peut pas prendre d’entrée de chaîne.Il est facile d'utiliser les caractères restants pour obtenir
1
, mais je ne sais pas comment je peux obtenir autre chose.Tout tester .
Peut-être utile:
fun a
est le même quefun('a')
,fun a b
est le même quefun('a','b')
et ainsi de suite. Cela peut être utilisé à plusieurs endroits:En utilisant cela fera
0
disponible, mais je ne vois pas comment le rendre utile pour le moment.e (2.71828...)
etj
sont encore inutilisés. Doit enleverceil
pour utilisere
si.Alternatives (inspiration):
la source
JavaScript (ES7), 16 nombres entiers,
137130128 octetsJ'ai pris la réponse de @ETHproductions et l' ai utilisée pendant un moment; ça a tellement changé que je l'affiche séparément. Les idées sont les bienvenues. :)
Restant:
$_@#!^&|/?:, ABDEGHIJKLNPQRUVWZcghjklmpqrsuvwyz
Ou, si l'extrait de code pour 1 est remplacé par
!!/!//!!/!/
:$_@#^&|*?:", ABDEGHIJKLNPQRUVWZcghjklmpqrsuvwyz
JavaScript (ES7), 16 entiers, 127 octets
Un octet plus court. : P
Restant:
$_@#!/^&|?:,ABDFGHIJKLNPQRVWYZcghjklmpqrsuvwyz
la source
-~{}-~{}
: P Dans l’ensemble, ils sont plutôt bons. Bien plus court que le mien, c'est sûr ...!&/^|
avec qui travailler, assez impressionnant. Si besoin est, vous pouvez utiliser!!/!//!!/!/
pour 1 à échanger!/
pour"*
.-~-~{}
+!![]+[+[]]
, tant qu'il n'y a pas de meilleur usage pour!
Dyalog APL, score 15, 89 octets
Les nouvelles lignes avant
l:l
font partie de 12.Les espaces en 14 représentent des onglets.
la source
0 0 0
->0,0,0
;]fromhex f
> <> , score 20,
93907465 octets(3 octets sauvegardés par Teal Pelican, beaucoup d'octets sauvegardés par Jo King!)
Essayez-les au terrain de jeu du poisson! Vous pouvez faire en sorte que les extraits impriment leurs résultats en les ajoutant
n;
à la fin de chacun. Notez que le 9ème extrait contient un onglet, qui est mangé par échange de pile.Explication:
iii((
, chacuni
essaie d'obtenir une entrée, mais comme il n'y en a pas, ils poussent EOF = à la-1
place. Alors(
est le moins-instruction, et puisque-1
n'est pas moins que-1
, il pousse une falsey0
; mais le second(
demande si-1
est inférieur à0
, ce qui est, alors il pousse une vérité1
.2
et3
sont évidents.ll{lll{[
, le premierl
pousse la longueur de la pile, ce qui est0
, puis le second pousse la nouvelle longueur, amenant la pile à0, 1
. Le{
fait pivoter la pile à gauche, en échangeant le1
et0
. Trois autresl
s apportent la pile à1, 0, 2, 3, 4
. Puis{
fait pivoter le1
vers l’avant, et[
siphonne la première1
chose sur la pile, qui est4
.5
,6
,7
Et8
sont trop évidentes.!\t00=0g
(où\t
représente un onglet),!
saute l'onglet, puis00=
pousse deux zéros et vérifie s'ils sont égaux - ils le sont, nous obtenons donc une vérité1
. Après avoir appuyé sur un autre bouton0
, leg
obtient le caractère en position1,0
du code, qui correspond à la tabulation contenant le code du caractère9
.a
àf
chaque pression10
à15
respectivement (probablement pour rendre hexadécimal agréable).44*
pousse deux4
s et les multiplie ensemble, pour16
.'RA'
pousse les codes de caractère deR
etA
(82 et 65 respectivement) dans la pile, puis les%
calcule82 mod 65 = 17
.999-9--
évalue à9 - ((9 - 9) - 9) = 18
."&F#"
pousse les codes de caractère de&
,F
et#
, qui sont38
,70
et35
respectivement. Ensuite,
, la division, alors nous obtenons38 / (70 / 35) = 19
.1::
pousse a1
et le duplique deux fois,+
ajoute deux de ceux ensemble pour obtenir2
;:+
duplique le2
et l'ajoute à lui-même pour obtenir4
;+
ajoute les restes1
à obtenir5
; puis:+:+
duplique et ajoute deux fois, résultant en20
.C'est le score maximum possible avec> <>. Tout extrait doit inclure une instruction quelque part qui transforme une pile vide dans une pile non vide, et il n'y a que 18> instructions <> qui peut le faire ( à savoir
i
,l
et les chiffres0–9
eta–f
), ainsi que le mode de chaîne. (Toute autre instruction ne fait rien sur une pile vide><v^/\|_#x!{}r
, ou essaie de faire apparaître quelque chose et des erreurs?.+-*,%=():~$@[]on&gp
,.) La saisie en mode chaîne utilise"
ou'
, ou , de sorte qu'il y a tout au plus des18 + 2 = 20
extraits possibles.Si vous êtes plus à l'aise avec les non imprimables que moi, c'est possible en 53 octets, grâce à Jo King:,
00=, iii((i-, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f, 2222***, !Xll$g, 11+::+:+:++, 'Y', "Z"
oùX
,Y
etZ
sont remplacés par des caractères avec des codes17
,19
et20
respectivement.la source
iii((i-
16>2222***
17> suivanteslll{lllll{{[{n
(peut-être incomplètes, mais si vous souhaitez afficher un seul nombre, au moins un moinsl
) 18>11+::+:+:++
! ll$g
où l’espace est remplacé par le caractère de contrôle de valeur 17 (Device Control 1)?MathGolf ,
485153 entiers, 324 octets+2 score (et -2 octets distincts utilisés pour
40
) grâce à @maxb .Chaque ligne est un programme séparé.
Octets utilisés (92 octets distincts):
îª∞~c±b+φⁿ_¥-567○¢i♀/d²♂ABCDE☻FGHIJKLMNOPQRST♥UVWXYZ♫¼8]Σ41╔½π░3§2#τ╥└♦⌡!⌠'0$ÿ@£9)►◄╠•╠"h ♣(
Explication et liens TIO:
MathGolf est une nouvelle langue de golf spécialisée dans les défis mathématiques du golf. Il comporte de nombreuses fonctions intégrées codées sur un octet, ce qui en fait un défi de taille.
1)
î
: Appuyez sur la valeur 1-indexée de la boucle, qui est 1 par défaut: essayez-le en ligne.2)
ª∞~
: appuyez sur [1]; le doubler ([2]); liste déroulante et placez son contenu dans la pile: essayez-le en ligne.3)
c±b±+
: poussez -2; puis pop et poussez sa valeur absolue; poussez -1; puis pop et poussez sa valeur absolue; et ajoutez-les ensemble Essayez-le en ligne.4)
φⁿ_¥-
: Poussez le nombre d'or (1,618033988749895); le cube (4.23606797749979); dupliquer le haut de la pile; prendre le modulo 2 (0,23606797749979); soustrayez-les les uns des autres: essayez-le en ligne.5,6,7) Les chiffres eux-mêmes: Essayez-le en ligne.
8) Essayez-le en ligne. 9) : Poussez -3; au carré: essayez-le en ligne.
○¢i♀/
: Poussez 2048; convertir en chaîne hexadécimale (800); cast to integer; poussez 100; diviser:d²
10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,26,27,28,29,30,31,32,33,34, 35,36,37,38) Pousser les éléments intégrés pour les nombres eux-mêmes (♂ABCDE☻FGHIJKLMNOPQRST♥UVWXYZ
): Essayez-le en ligne.39)
♫¼¼¼¼
: Poussez 10000; entier divisé par 4 à quatre reprises: essayez-le en ligne.40)
88888]Σ
: Poussez 8 cinq fois; les envelopper dans une liste; résumer cette liste: essayez-le en ligne.41) Le numéro lui-même: essayez-le en ligne.
42)
╔½½½½½½½½½½½
: Push 86400; entier divisé par 2 onze fois: Essayez-le en ligne.43)
π░3§3
: Push PI (3.141592653589793
) couler à la ficelle; pop et poussez son troisième caractère indexé par 0 (4); poussez 3; affiche la pile entière réunie de manière implicite: 44)Essayez-le en ligne. 48)22#22#
: Poussez 2 deux fois; prenez le pouvoir des deux (4); refais-le; affiche la pile entière réunie de manière implicite: Essayez-le en ligne.45)
τ╥└
: appuyer 2 * PI (6.283185307179586); éjectez et poussez la puissance de 2 en dessous qui est la plus proche (4); poussez le haut de la pile + 1 sans éclater (5); affiche la pile entière réunie de manière implicite: Essayez-le en ligne.46)
♦⌡⌡⌡⌡⌡⌡⌡⌡⌡
: Poussez 64; décrémentez de neuf fois: essayez-le en ligne.47)
!⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠
: Appuyez sur gamma (n + 1) (1 par défaut); incrémente de 2 vingt-trois fois: essayez-le en ligne. : chaîne de poussée'0$
: Indique la valeur ordinale du caractère '0': essayez-le en ligne.49) ; pop et pousser sa longueur (4); poussez 9; affiche la pile entière réunie de manière implicite:
ÿ@@@@£9
"@@@@"
Essayez-le en ligne.50)
))))))))))))))))))))))))))))))))))))))))))))))))))
: Incrémente de 1 fois et demi: Essayez-le en ligne.51)
►◄╠•╠
: Pousser 1 000 000; Pousser 10 000 000; pop et entier-divisez-les l'un avec l'autre (10); poussez 512; pop à la fois et entier-diviser les uns avec les autres: Essayez-le en ligne.52)
"hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh"h
: chaîne de poussée"hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh"
; poussez sa longueur (sans éclater la corde); tout supprimer de la pile sauf le dernier élément: essayez-le en ligne.53)
♣(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((
: Poussez 128; décrémenté de soixante-quinze fois: essayez-le en ligne.Je vais essayer d’en ajouter un peu plus tard. Il me reste encore des choses utiles, y compris modulo
%
et multiplier*
.la source
88888ΓΣαΣ
->88888]Σ
ou qui88888§§§§Σ
vous font gagner 2 commandes au prix d’en utiliser une. Vous pouvez également faire quelque chose comme"xxxxxx"h
où le dernier caractère est un espace insécable qui efface tout sauf le TOS et vous pouvez utiliser la longueur de la chaîne pour générer le nombre. Peut-être utilisez-vous autre chosex
, car vous avez alorsWx
53 options, dans la mesure où vous pouvez en obtenir une autre.char/ord
opérateur qui fonctionne comme'A$
->67
, et qui fonctionne également pour les chaînes plus longues (un peu comme les entiers en base 256). Ce n'est pas très bien documenté, mais si vous souhaitez améliorer cette réponse, je pourrais recréer le forum de discussion de MathGolf pour toutes questions.88888]Σ
. Je ne savais pas à propos de]
. En ce qui concerne le"hhhhh"h
, cela ne semble pas fonctionner . : S[
commençant par le contexte du tableau, en le]
terminant et en encapsulant les résultats dans un tableau. Pour que le niveau supérieur se comporte comme les niveaux inférieurs,]
placer la pile entière dans un tableau semblait une bonne idée.Java 8,
111213, 39 octetsJava ne contient que 10 symboles pour les nombres (0 à 9) et tous les appels de méthodes et les constantes nécessitent un point; je ne suis donc pas sûr de pouvoir obtenir plus de 11 sorties.Apparemment, les caractères sont convertis en nombres entiers par défaut lorsque des opérations sont appliquées
+1 avec l'aide de @ OlivierGrégoire
Explications:
entier lambda qui ne prend aucune entrée et renvoie 1. Lorsqu'un paramètre ne prend aucune entrée, la valeur par défaut est utilisée conformément à la méta publication ci-dessus, qui pour les entiers vaut 0
littéraux entiers
XOR de deux personnages à renvoyer 10
littéral entier
expression lambda qui renvoie la longueur d'une chaîne de 12 caractères
Hexadécimal 13
Lien TIO si vous voulez vérifier.
la source
2
pouvez écrire au fur2
et à10
mesure'P'^'Z'
. En outre, cela libère les personnagesX+*
et les utiliseP
.i->i.ONE
non valides.Gaia , score 25, 203 octets
Je considère cela comme un score parfait, car plus de nilads ne peuvent être utilisés compte tenu des limitations de caractères.
Des explications
1.
§‼
§
est un caractère d'espace,‼
contraint de booléen, le résultat est donc 1.2
..⌉+⌉
.
est un raccourci pour0.5
, alors c'estceil(0.5+ceil(0.5))
.3
₵P~~
₵P
est pi,~
est la négation au niveau du bit. La double négation au niveau du bit est simplement une troncature.4
4
5
5
6
6
sept.
∂Ql
∂Q
est une liste contenant les noms des jours de la semaine,l
is length.8
8
9
9
dix.
¶c
Code
c
du saut de ligne¶
.11
11
12
'¡ċ⌋u⌋
13
--⁻-⁻-⁻-⁻-⁻-⁻-⁻-⁻-⁻-⁻-⁻-⁻-⁻-⁻
-
est un raccourci pour-1
,⁻
est la soustraction. Alors ceci est-1 - -1 - -1...
assez de temps pour faire 13.14
7:,Σ
Poussez
7
, dupliquez:
, jumelez,
les deux 7 dans une liste et additionnezΣ
.15
Ø!))))))))))))))
Ø
est une chaîne vide, il enØ!
va de 1. Incrémenter)
1 14 fois.16
øøw<øøw<«øøw<«øøw<«øøw<«
17
⟩‘
La fermeture d'une chaîne avec en
‘
fait un littéral en base 250.⟩
est à la valeur d'octet 17 dans la page de code de Gaia.18
₸ḣ₸K$₸ḣ₸/S₸₸/=$
19
]]]]]]]]]]]]]]]]]]]n
Chacun
]
encapsule la pile dans une liste. Faites cela 19 fois et obtenez la profondeurn
de la liste.20
⇑’e
Fermer une chaîne avec en
’
fait une liste de points de code pour la page de codes.e
vide la liste sur la pile.⇑
a un point de code de 20 dans la page de codes.21
0(((((((((((((((((((((_
Décrémentez
(
0 21 fois, puis annulez_
.22
22
23
“B”“↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺B”B
Convertissez la chaîne en
“B”
base 24, où se trouvent les chiffres de 0 à 23↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺B
. Le résultat est23
.24
3₈×
3 × 8.
25
ℍḥḥ
100
ℍ
réduit de moitiéḥ
, et encore moitié.la source
C, note 13
Ce ne sont que des tas de constantes entières.
0==0
évalue à 1__LINE__
= 21+1+1...
=1*10
= 10'o'
est 111,'.'
représente le 0x10 ASCII non imprimable. 111/10 = 11(2<<2)
= 8,8*2
= 16,16-2-2
= 12"strlenstrlens"
= 13la source
Ohm , score
2122, 160 octets au totalEssayez-le en ligne!
Des explications
1.
╓S@Ri
Appuyez sur les secondes de la date / heure en cours (
╓S
). Obtenez la plage comprise entre 1 et secondes (@
), inversez-la (R
), obtenez le dernier élément (i
), qui est toujours 1.2
ΓΓ-Γ-Γ-
Γ
est -1, donc c'est (-1) - (-1) - (-1) - (-1), qui est 2.3
αê⌠
αê
est le numéro d'Euler (2.71828 ...),⌠
est ceiling. 3 est le résultat.4
¡¡¡¡¼
¡
incrémente le compteur,¼
pousse le compteur.5
5
Juste un littéral.
6
▀lll▀l
▀lll▀
est un littéral de chaîne compressé équivalent à"of >ic"
.l
prend la longueur, donc le résultat est 6.sept.
ÑÑÑÑÑÑÑÿWÿk
Nous allons d’abord pousser 7 newline chars (
Ñ
) puis une chaîne vide (ÿ
). La pile est encapsulée dans un tableau (W
), puis l'index de la chaîne vide dans ce tableau est trouvé.8
ü`½½
ü
est un caractère d'espace.`
pousse sa valeur ASCII (32), puis se divise par deux (½½
).9
9
Juste un littéral.
dix.
..≥°
..
est un.
personnage littéral . Il obtient incremented (≥
), qui analyse la chaîne sous forme de nombre, la valeur par défaut étant 0 car ce nombre n'est pas valide, et l'incrémente à 1. Ensuite, nous calculons 10 1 (°
).11
$$J
$
pousse la valeur actuelle du registre, initialement 1. Alors poussez 1 deux fois, joignez la pile et imprimez.12
3dd
Appuyez sur 3 et doublez-le deux fois.
13
7ƒ
Pousse le 7ème numéro de Fibonacci.
14
2≡≡≡Σ
Appuyez sur 2, tripliquez-le trois fois, en laissant 7 2 sur la pile. Ensuite, prenez la somme de la pile (
Σ
).15
║F
║
est le délimiteur pour les littéraux en nombre de base 220. Comme il s’agit d’une fin de ligne, il n’est pas nécessaire de la terminer.16
4º
Calculer 2 4 .
17
0ò~ò~ò~ò~ò~ò~ò~ò~ò~ò~ò~ò~ò~ò~ò~ò~ò~
ò
is bitwise negate,~
est arithmetic negate. En combinant ces opérateurs, nous pouvons incrémenter 0 17 fois.18
6DD++
Appuyez sur 6, dupliquez-le deux fois et calculez 6 + 6 + 6.
19
8π
Poussez le 8 nombre premier.
20
τ╛hτ*
Poussez 10 (
τ
), obtenez le premier élément (h
) de ses facteurs premiers (╛
), multipliez-le par 10.21
"≤"≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤A
Comme pour les extraits précédents, la chaîne
"≤"
est analysée à 0. Nous la décrémentons 21 fois, puis prenons la valeur absolue.22
1111 11v11%L1111 11v11%L
Ici, nous calculons 1111 div 11 mod 11, qui est 2, puis imprimons 2. Ensuite, recommencez.
la source
PowerShell, score
12, 91 octets.14, 176 octetsModifier:
(),""
Pondering 15 avec quelque chose comme,"ZZZZZZZZZZZZZZZA".InDeXof("A")
mais ne peut pas réutiliser le point ou le 'e' ..PowerShell ne peut pas faire de variables sans $, ne peut pas faire d’exponentiation, de décalage de bits, de Pi, de ceil (), etc. avec des symboles de base, et fait surtout le type coercien de / vers bool et de / sous forme de chaînes, donc il y a relativement peu de place pour la génération de nombres à faible syntaxe.
la source
0
encore utilisé , donc 13 peut être0xd
. Vous pouvez le mettre5
à sa place normale, vous+
permettant de combiner1
s. Cela devrait vous amener à 14. Si vous devez sauvegarder des caractères, les clés de hachage peuvent contenir plus d'une lettre. Et si vous avez un moyen supplémentaire d’obtenir des 1 pour résumer, vous pouvez faire10
=1e1
.""-(""-(""-lt(""-""))-(""-lt(""-"")))
. Cela$?
vous permet de faire la somme, et vous pouvez ensuite faire ce1e1
que j'ai suggéré.t
affrontements avec les deux versions de 1.(""-eq"")-(""-(""-eq""))
semble mieux, leq
dans le hashtable est facilement remplacé.TI-Basic (série 83), score
2122232425 (1003 octets)Consultez http://tibasicdev.wikidot.com/one-byte-tokens pour obtenir une liste des tâches que le défi ne permet pas et ne permet pas ici.
Tous ces programmes peuvent constituer des programmes complets, car la dernière ligne d’un programme est imprimée automatiquement. Mais (à l'exception de 17, qui correspond à plusieurs lignes), ils peuvent également être des extraits sur l'écran d'accueil.
À ce stade, je ne vois aucun autre moyen d’obtenir une valeur non nulle à partir des jetons disponibles. S'il y a une amélioration à faire, il faudra d'abord rendre certaines des solutions ci-dessus plus conservatrices.
Des explications
A=A
est un booléen 1 car la variableA
est égale à elle-même.B
est 0 par défaut,tan(tan(cos(cos(cos(B
est environ 2.21, puis nous prenons la parole.C!°
est 1 degré en radians, environ 0,017. Une puissance positive de ceci est tanh (2), environ 0,964. Nous codons ce pouvoir en binaire en utilisant la multiplication implicite et√(
, puis prenonstanh⁻¹(
.cosh(sinh⁻¹(X
₁₀^(
est un octet intégré pour les puissances de 10 et 10 ^ 10 ^ 0 = 10 ^ 1 = 10.F nPr F
est 1.sin(tan⁻¹(X
simplifie enG≤G
est 1, donc[[G≤G]...[G≤G]]
est un vecteur de colonne 13x1. Prendre le produit de sa transposition avec lui même donne la matrice[[13]]
, dont le déterminant est 13.not(H)
est 1.tanh(not(H))
est juste un nombre différent de 0 ou 1, etln(XXX....X)ln(X)^⁻1
simplifiera le nombre deX
'dans le premier log à condition queX
ne soit pas 0 (pour que le journal existe) et pas 1 (pour que nous ne divisions pas par 0).e^(e^(e^(F
évalue à environ 15,15, puis nous prenons la parole.J≥J
est 1.identity(
construit une matrice d'identité 1x1,dim(
trouve ses dimensions de ligne et de colonne, etsum(
ajoute pour obtenir 2. Ensuite, on répète l'opération en ajoutant les dimensions d'une matrice 2x2 pour obtenir 4 et en ajoutant les dimensions d'une matrice 4x4. pour obtenir 8, et encore, en ajoutant les dimensions d'une matrice 8x8 pour obtenir 16.K nCr K
est le coefficient binomial 0 choisissez 0 ou 1. En additionnant 17 1, on obtient 17.i-i-...-i
simplifie à ⁻18i, et en prenantabs(
donne 18.rand→L
stocke un nombre réel aléatoire dans L, mais nous ne nous soucions pas de ce que c'est. Nous calculonslog(L)⁻¹log(L^19)
, ce qui simplifie à 19.sinh(sinh(cos⁻¹(I
est un peu plus de 4,seq(III,I,I,sinh(sinh(cos⁻¹(I
donne donc la liste{0 1 8 27 64}
dont la moyenne arithmétique est 20.π
devrait donner 21; nous codons ce pouvoir de manière ternaire en utilisant la multiplication implicite et³√(
.3×√(
comme racine de cube et(
pour la multiplication.Fix 0
est le paramètre permettant d'afficher 0 chiffre après la virgule, en arrondissant toutes les valeurs à des entiers.sin⁻¹(ᴇ0
évalue à π / 2, et π / 2 multiplié par lui-même 7 fois donne environ 23,59, ce qui arrondit à 24.5*5
est 25. (Il serait plus prudent d'utiliser5
pour obtenir 5 et d'adapter la solution utilisée pour 25. Mais cette façon permet de gagner beaucoup d'espace et*
n'est pas un personnage très utile car la multiplication implicite existe.)la source
SOGL , score
161820, 109 octets, 47 caractères utilisésla source
Brachylog , 16 nombres entiers, 86 octets
Essayez-le en ligne!(L'entrée contrôle quel programme est exécuté, de 1 à N)
Explication
la source
Gelée , score 22, 177 octets
Essayez tout à la fois ou essayez un à la fois (l'argument est la sortie souhaitée).
Caractères inutilisés:
la source
A
pour les 2 et 4 , non?22¹£€Y
le lien principal, vous pouvez exécuter tous les extraits simultanément . tio.run/##y0rNyan8///hzjauOsc6Ry5jLt0jG3UPbTq0icuUy4zLnMuC6/…Reng, score 40, 149 octets
Essayez-le ici!
Toutes les lettres majuscules sont des chiffres, alors c'est bien. Tous sauf deux d'entre eux sont des extraits. Les deux qui sont des programmes:
Le lien fourni permet de voir la pile en cours d'exécution. J'écrirai une explication plus tard.
la source
CJam, score 27, 168 octets
1-3:
X
,Y
,Z
Les variables
X
,Y
etZ
sont initialisées à 1, 2 et 3, respectivement.4:
",,,,",
Poussez la ficelle
,,,,
et prenez la longueur.5-9:
5
,6
,7
,8
,9
Littéraux numériques.
10-20 :
A
-K
Variables préinitialisées.
21:
U)))))))))))))))))))))
La variable
U
est initialisée à0
. PoussezU
et incrémentez 22 fois.22:
22
Littéral numérique.
23:
';(((((((((';((((((((
Appuyez sur le caractère
;
et décrémentez-le 9 fois pour obtenir2
, puis appuyez à;
nouveau et décrémentez-le 8 fois pour obtenir3
.24:
4m!
Prenez la factorielle de 4.
25:
TT=TT=+TT=TT=TT=TT=TT=++++
TT=
pousse1
. Ce code est équivalent à1 1+1 1 1 1 1++++
.26:
N:i~W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-
N
pousse une chaîne contenant une nouvelle ligne.:i
le convertit en une liste de codes de caractères[10]
.~
le déballe, donne10
.W-
est l'équivalent d'en ajouter un. Incrémenter 10 seize fois donne 26.27:
LLLLLLLLLLLLLLLLLLLLLLLLLLL0]0#
Trouvez l'index de 0 dans une liste où 0 est le 27ème index.
Caractères encore disponibles:
$%&*./1<>?@MOPQRSV[\^_`abcdefghjklmnopqrstuvwxyz{|}
Quelques notes pour une expansion potentielle:
Je devrais peut-être changer 10-20 pour utiliser les variables pour autre chose. Si je reçois des nombres supérieurs à 1, je peux utiliser
*
(et éventuellement des opérateurs au niveau du bit, mais je ne pense pas qu'ils vont aider beaucoup).J'ai toujours
S
ce qu'il y a de mieux pour moi.Si je change de 26 à
N{}/iW-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-
, alors:
sera disponible.Je peux pousser des listes vides et obtenir plus de zéros avec les variables existantes. Je peux aussi obtenir π, mais cela ne semble pas très utile à moins de pouvoir le convertir en un entier, et
m
(pourm[
) eti
sont déjà pris.En termes de manipulation de tableau, je peux:
%
ouf
*
|
:M1|2|3|
la source
U)))))))))))))))))))))
et 22 être22
qui seraient libres1
pour un extrait de code ultérieur.:i
la liste de chiffres (par exemple,[P]1b
donne3
).''
au lieu de';
, puis en utiliser suffisamment(
pour envelopper les chiffres (donc environ 65k(
pour chaque chiffre). Cela libérerait;
quelque chose d'autre, mais je ne suis pas sûr de son utilité.;
, mais pour le moment je ne peux pas.Haskell , score 13, 86 octets
Essayez-le en ligne!
Merci à Ørjan Johansen d'avoir trouvé le moyen de corriger le chevauchement de ma lettre tout en préservant le score de treize. (Également pour m'avoir mis au courant de la situation alors que cette réponse était supprimée.)
pi/pi
est1.0
.sum[]
évalue à0
,0^0
à1
etsum[1,1]
à2
.3
pour9
décoder simplement eux - mêmes.length"eeeeeeeeee"
donne la longueur de la chaîne, qui est10
.2+2+2+2+2+2
est12
.0xD
est hexadécimal pour13
.la source