Chaîne de la capsule temporelle 2016: gravir les échelons


28

Utilisation des 74 caractères de la chaîne capsule temporelle 2016

H@~*^)$.`~+1A|Q)p~`\Z!IQ~e:O.~@``#|9@)Tf\eT`=(!``|`~!y!`) Q~$x.4|m4~~&!L{%

écrire N extraits de code tous dans la même langue où:

  • Le 1er extrait de code sort 1.
  • Le 2e extrait de code sort 2.
  • Le 3e extrait de code sort 3.
  • ... etc. ...
  • Le Nième extrait de code sort N(le nombre, pas la lettre littérale).

Un "extrait de code" est défini comme l'un de ces éléments:

  • Un programme complet sans entrée requise qui génère le nombre normalement .
  • Une fonction sans arguments requis qui génère / renvoie le nombre normalement .
  • Une expression REPL qui évalue le nombre.

(Vous pouvez mélanger et assortir ces trois variantes dans vos N extraits.)

Les caractères que vous êtes autorisé à utiliser dans l'ensemble combiné de N extraits sont précisément les 74 caractères de la capsule temporelle, plus floor(N/2) des octets "génériques" supplémentaires que vous pouvez utiliser n'importe où.

Par exemple, la capsule temporelle contient trois @de sorte que dans l'intégralité de vos N extraits, il ne peut y avoir jusqu'à trois @présents que si vous décidez d'utiliser certains de vos floor(N/2)octets génériques pour d'autres @.

Ainsi, sans compter les caractères génériques, l'ensemble combiné de caractères dans vos N extraits doit être un sous-ensemble des 74 caractères de la capsule temporelle. Leur longueur combinée ne peut pas dépasser 74. Vous ne pouvez pas réutiliser des caractères de capsule temporelle ou des octets génériques entre les extraits.

Remarques

  • Il n'y a pas d'autres limites sur la longueur de l'extrait ou le nombre de caractères génériques pouvant être utilisés par extrait.

  • Vous devez écrire tous les extraits de 1 à N. Ce n'est pas 0 à N-1, pas k à N + k-1.

  • Les extraits de code doivent être individuels et non un extrait de code qui génère la liste 1, 2, 3, ..., N.

  • Les sorties peuvent être des flottants comme 3.0à la place de 3et vous pouvez utiliser une base autre que décimale si c'est la base naturelle de votre langue . Vous devez utiliser la même base pour tous les extraits.

  • Les caractères génériques sont comptés comme des octets dans le codage de votre langue . Ce sera probablement ASCII mais par exemple, si il compte comme un octet dans votre codage, vous pouvez l'utiliser comme un seul octet générique.

  • Vous pouvez utiliser des octets génériques pour les caractères multi-octets. par exemple, il est normalement de trois octets, vous pouvez donc l'utiliser dans un extrait, mais cela vous coûtera trois de vos floor(N/2)octets génériques.

  • Les sauts de ligne tels que \r\npeuvent être considérés comme un octet.

Exemple

En Python, N = 4 est possible simplement en utilisant le REPL. Il y a des floor(4/2) = 2caractères génériques.

  1. 1de la capsule temporelle est une expression qui évolue vers 1.

  2. 2consiste en un seul caractère générique, à savoir le 2. Evals to 2.

  3. 3se compose également d'un seul caractère générique. Evals to 3. Plus de caractères génériques.

  4. 4est heureusement dans la capsule temporelle et ça ne fait rien 4.

Ces extraits sont courts et triviaux. Une vraie réponse serait probablement beaucoup plus complexe.

(Cinq et au-delà en Python sont certainement possibles, mais je laisse le soin aux professionnels.)

Notation

La réponse avec le N le plus élevé gagne; c'est-à-dire celui qui gravit les échelons les plus élevés.

En cas d'égalité, la réponse qui a utilisé le moins d'octets génériques l'emporte.
En cas d'égalité, la réponse qui a utilisé le moins de caractères cumulatifs l'emporte.
S'il y a toujours égalité, la réponse précédente l'emporte.


1
Si un langage de programmation n'a pas de REPL, pouvons-nous quand même soumettre une expression dans ce langage s'il évalue à la valeur appropriée? (Par exemple, 4un extrait de code valide renvoie 4, dans les anciennes versions de Perl sans REPL?)

1
Oh, et une autre question: dans une langue avec un codage non compatible ASCII, traitons-nous les caractères de la capsule temporelle comme des caractères (en les traduisant dans le codage de la langue), ou comme des octets (en écrivant un programme tel que le visualiser en ASCII semble contenir uniquement des caractères de la capsule temporelle)? Dans certaines langues avec des jeux de caractères étranges, la plupart des personnages de la capsule temporelle ne sont même pas dans le jeu de caractères, ce qui les rend difficiles à utiliser tels quels.

1
Qu'en est-il des zéros non significatifs? Est-ce 07 la même chose que 7?
Emigna

1
Cela me dérange vraiment que la chaîne ne contienne ni -ni n...
devRicher

1
Les "extraits" dans les langues basées sur la pile peuvent-ils laisser leurs valeurs sur la pile?
FlipTack

Réponses:


10

CJam , 25 extraits, 12 caractères génériques, 64 octets

1
Q!)
Z
4
5
6
L``(*$)#
8
9
T!T
B
C
D
E
F
G
H
I
J
K
O`e`~~!!
B`:)
Q``$e`~~@~@=~+
Q!)4
Amf

Essayez-le en ligne!

Caractères génériques:

568BBCDEFGJK

Je sens que je dois poster rapidement, avant que Dennis ne me surpasse.


Quels caractères génériques avez-vous utilisés?
Rɪᴋᴇʀ

@EasterlyIrk Edit. Vous pouvez également utiliser le compteur de caractères génériques dans la réponse de Dennis .
jimmy23013



5

JavaScript, 10 numéros, 5 caractères génériques

Caractères restants: !!#$$%&())))*...:=@@@HILOQQQTTZ\^```eefmpy{|||~~~~~~~~~

5/5 caractères bonus utilisés: 37680

Programmes:

  1. 1
  2. ! `` +! ''
  3. 3
  4. 4
  5. 4|!``
  6. 6
  7. 7
  8. 8
  9. 9
  10. 0xA

J'avais espéré que l'une des cordes que je pourrais utiliser \xABserait un nombre, mais malheureusement aucune des combinaisons que j'ai essayées n'en donnerait. Le caractère ^(XOR) serait également intéressant à utiliser, mais je ne vois actuellement aucune opportunité où il pourrait être utilisé pour faire un nombre assez important.

Si vous voyez une autre combinaison possible, faites-le moi savoir dans les commentaires.

Edit: Ajouté # 10 grâce à Arnauld


1
Je pense que vous pouvez ajouter 10. 0xA(en 0étant un nouveau caractère générique accordé pour avoir atteint 10)
Arnauld

Vous pouvez faire (Q=!``)|Qpour 1 pour obtenir un supplément 1quelque part. Je ne sais pas si cela vous aidera
ETHproductions

4

Pyth, 12 extraits, 20 octets (6 caractères génériques)

f@

Trouvez le premier nombre où la racine (n, n) est vraie, à partir de 1. Sortie: 1

y!H

Ne double pas {}. Sortie: 2

3

Caractère générique n ° 1. Sortie: 3

4

Sortie: 4.

5

Caractère générique n ° 2. Sortie: 5

6

Caractère générique n ° 3. Sortie: 6

7

Caractère générique n ° 4. Sortie: 7

8

Caractère générique n ° 5. Sortie: 8

9

Sortie: 9

T

Variable préinitialisée. Sortie: 10

+T!Z

Dix plus pas zéro. Sortie: 11

12

Caractère générique n ° 6 ( 2). Sortie: 12


4

Octave, 6 chiffres, 3 caractères génériques

1: ~~I          % not(not(sqrt(-1))) evaluates to true (or 1)
2: 2            % Wildcard
3: 3            % Wildcard
4: 4
5: (T=4)+~~T    % Create a variable T=4, then add not(not(T)) which evaluates to 1.
6: 6            % Wildcard

J'ai encore 1, 9et à *gauche, mais je ne sais pas si cela me aidera beaucoup. Je vais voir ce que je peux faire avec ça :)

Pas facile d'obtenir de nombreux numéros lorsque vous n'utilisez pas un Esolang. J'espère pouvoir en obtenir un ou deux de plus, mais je pense que ce sera difficile.


2

Arrogant , 10 numéros (4 caractères génériques)

Ce sont tous des extraits qui laissent le résultat sur la pile. Vous pouvez le tester dans le interpréteur en ligne en ajoutant#à chaque extrait (pour imprimer le numéro)

A(      \ 1:  Get alphabet and check that 'Z' >= 'Y'. Results in 1 (True)
x&+     \ 2:  Check stack equality (True - both are empty) then duplicate and sum.
3       \ 3:  Push 3 (1 wildcard)
4       \ 4:  Push 4
1 4+    \ 5:  1 + 4 in postfix, leaves 5 on the stack (1 wildcard)
`L`T%   \ 6:  Get character code of 'L' and modulo by T (ten) - leaves 6 on the stack
7       \ 7:  Push 7 (1 wildcard)
8       \ 8:  Push 8 (1 wildcard)
9       \ 9:  Push 9
T       \ 10: Push 10

Cette réponse n'est pas encore complète - bien qu'il semble peu probable que j'aille beaucoup plus loin.


1

05AB1E, 12 numéros, 6 caractères génériques

 1:    1                                   -> 1
 2:    )O!x                                -> sum([])!*2
 3:    4L`\                                -> 2nd_last(range(1...4))
 4:    4                                   -> 4
 5:    5        # wildcard 1 = 5           -> 5
 6:    6        # wildcard 2 = 6           -> 6
 7:    Tf`~                                -> or(last2(prime_factors(10)))
 8:    8        # wildcard 3 = 8           -> 8
 9:    9                                   -> 9
10:    T                                   -> 10
11:    A`Q!T+   # wildcard 4 = T           -> (y==z)!+10
12:    TÌ       # wildcard 5,6 = T,Ì       -> 10+2

1

Hexagonie , 6 numéros, 3 caractères génériques, 23 octets

1!@
))!@
)|\@$!
4!%
4)!:
6!@

Essayez-le en ligne!

L'ensemble du sixième programme est composé de caractères génériques.

Le seul vraiment intéressant est 3. Alors que je pouvais faire cela 4(!@, cela me laisserait sans 4générer 5facilement, alors j'ai opté pour ceci à la place:

 ) |
\ @ $
 ! .

En raison de la |, la )première ligne est exécutée deux fois, avant que l'IP ne passe dans le coin droit. $saute le @, puis \redirige l'IP à travers )une troisième fois. L'IP passe dans le coin inférieur gauche, !imprime le 3et @termine le programme.

Je ne pense pas que plus de 6 extraits soient possibles, car il n'y a que 5 commandes d'impression ( !!!!!) et 5 commandes qui peuvent être utilisées pour terminer le programme ( @@@%:). Ainsi, après le cinquième extrait, nous avons besoin d'au moins deux caractères génériques par extrait. Par conséquent, même si j'ai réussi à m'en passer 6sans utiliser de caractère générique pour cela, il n'y aurait pas assez de caractères génériques pour aller à l'extrait de code sept.


1

JavaScript, 8 numéros, 4 caractères génériques

 1: 1
 2: -~!``
 3: 4+~!$
 4: ~!``*~!``
 5: 4|!$
 6: 0xf^9
 7: 7
 8: 8

Je pourrais réessayer plus tard - je suis en train de perdre des personnages en 2 et 6, quand vous y arrivez.


0

Befunge-98, 4 extraits, 18 octets, 2 caractères génériques

!.@
!:+.@
41-.@    wildcard 1 = -
4.#A9H   wildcard 2 = .

Caractères restants: !!!$$%&())))*=ILOQQQTTZ\^`````````eefmpxy{||||~~~~~~~~~

Je doute que d'autres soient possibles, car chaque programme supplémentaire nécessitera une forme de sortie, et tous ., sont déjà utilisés. Si je peux trouver un moyen de faire 3 et 5 sans caractère générique, alors c'est possible.

Le dernier programme se terminera finalement en raison du remplissage de la pile. Aet Hsans empreintes digitales chargées se reflétera, et le programme continuera à appuyer sur 9.


Je ne pense pas que le dernier soit valide. Sauf indication contraire, les programmes doivent se terminer.
Martin Ender

Vous pouvez simplement terminer avec %.
Martin Ender

@MartinEnder 00%est valide dans Befunge-98 et donne 0 (ou demande à l'utilisateur le résultat dans Befunge-93.
PurkkaKoodari

@MartinEnder En outre, le dernier programme se terminera éventuellement en supposant une mémoire finie. La spécification Funge-98 mentionne que {peut inverser s'il manque de mémoire; rien n'est dit sur la poussée normale, et tous les interprètes semblent échouer sur MOO, mais les limites de mémoire sont clairement prises en compte dans la spécification de langue.
PurkkaKoodari

Je pense que cela pourrait potentiellement être amélioré (peut-être ???) en raison de la présence du ppersonnage, mais cela prendrait un certain travail. Vous pourriez faire e%9pour obtenir 5, mais vous auriez besoin d'un moyen pour l'imprimer et terminer le programme, donc
j'en

0

SmileBASIC, 12 extraits, 5 caractères génériques, 31 octets

!.     '. is parsed as the number 0.0; taking the logical not gives 1
!.+!.  'Previous value added to itself
@Q||Q  '@Q is a label string and Q is a variable. For some reason, certain comparison/logical operations between strings and numbers return 3 rather than 1 or 0. 
4      '4
#TLIme 'Constant for the text color lime green, value is 5.
6      '6 (wildcard)
7      '7 (wildcard)
8      '8 (wildcard)
9      '9
&HA    'Hexadecimal A
11     '11 (one of them is a wildcard)
4*3    '4 multiplied by 3 (3 is wildcard)

J'aurais également pu utiliser une variable au lieu de .(les variables commencent à 0) et une variable de chaîne (comme Q$) au lieu de@Q

Caractères utilisés: !!!#&*+...1449@AHILQQTem||

Caractères génériques utilisés: 67813

caractères inutilisés: !!$$%()))):=@@OQTZ\\^`````````efpxy{||~~~~~~~~~

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.