Polyglotte l'OEIS (non constant)!

24

Avertissement: Ceci est fortement inspiré par "Polyglot l'OEIS!" mais résout le problème qui a conduit à la fermeture (voir la section sortie) et a été republié pour ne pas invalider les réponses.

introduction

Nous connaissons et aimons tous l' encyclopédie en ligne des séquences entières ( OEIS ). Et si nous faisions une version hors ligne des séquences intéressantes? Eh bien, ce serait un peu trop facile, n'est-ce pas et comment choisiriez-vous une séquence avec notre interface standard!? Non. Nous avons besoin d'une solution plus simple à cela. Un polyglotte!

Contribution

Votre entrée sera un entier non négatif n.

Sortie

Votre sortie sera soit

  • La n-ième entrée d'une séquence OEIS OU
  • Les premières nentrées d'une séquence OEIS.

Vous pouvez considérer que l'index est basé sur 1 ou sur base 0 selon vos préférences.

Pour ne pas faire de cette question un doublon des séquences constantes polyvalentes de l'imprimante entière sont interdites. Cela devrait également augmenter le niveau de difficulté des soumissions et éviter les solutions "ennuyeuses";)

Une séquence n'est pas constante s'il existe deux membres de séquence qui sont inégaux.

Uhm, alors où est le défi?

Vous devez polyglotter la fonctionnalité ci-dessus. C'est-à-dire que si vous prenez en charge les langues A, B et C, toutes doivent implémenter différentes séquences OEIS. Le choix de la séquence n'est pas limité, sauf que vous en avez besoin de différentes pour toutes les langues.

Autrement dit, si vous exécutez le programme fourni dans la langue A, alors la séquence X doit être générée, si vous exécutez le programme fourni dans la langue B, alors la séquence Y doit être générée (avec X! = Y) et si vous exécutez le programme fourni en langage C, alors la séquence Z sera générée (avec X! = Z && Y! = Z).

Qui gagne?

La réponse avec le plus de paires séquence / langue gagne. Le premier bris d'égalité est la taille du code (en octets), la valeur inférieure étant meilleure. Le deuxième bris d'égalité est le temps de soumission, le précédent étant meilleur.

Des derniers mots / règles?

  • Vous devez déclarer quelle langue générera quelle séquence.
  • Les règles d'E / S standard s'appliquent.
  • Si différents codages sont utilisés entre les langues, les deux programmes doivent utiliser la même séquence d'octets.
  • Révisions Langue (Python 2/3) ne comptent que des langues différentes. Différentes implémentations d'une langue (comme Browser JS vs Node.js) comptent également comme différentes langues.
  • Des échappatoires standard s'appliquent.
SEJPM
la source
4
Ce message a été réalisé conformément à cette méta-questions-réponses .
SEJPM
Différentes langues peuvent-elles avoir une indexation différente?
Stephen
2
@StepHen oui, ils le peuvent.
SEJPM

Réponses:

16

3 langues (1 octet) - Pyth ( A001477 ), MATL ( A000027 ), Braingolf ( A000217 )

Q

Comment?

Q fait ce qui suit:

  • En MATL, cela signifie + 1, donc il évalue essentiellement à input + 1.

  • En Pyth, cela signifie entrée, donc il ne fait que sortir l'entrée.

  • Dans Braingolf, c'est la fonction intégrée pour les nombres triangulaires.

Mini-polyglotte

Pyth peut être remplacé par l'un des langages suivants: GolfScript , Pyke , Brachylog ou Brain-Flak .

M. Xcoder
la source
1
vous avez certainement choisi les bonnes langues pour celui-ci +1: P
HyperNeutrino
1
@HyperNeutrino Je viens de porter ma réponse à partir de là, mais j'ai choisi de très bonnes langues à l'époque, alors oui: P - Merci!
M. Xcoder
Rappelez-vous, c'est le nombre de langues, pas le code-golf: P
Stephen
@StepHen Je pense que 3 est raisonnable.
M. Xcoder
14

10 langues, 122 octets

#|A=1:0;~@}{\,[.,];oi
#coding:utf-8
print (0 and gets.to_i-1 or int(input())**(2+(1/2>0)));quit()#⎚I±N»
# x
#x%:+.

Je peux certainement ajouter un tas plus. 1 indexé sauf indication contraire.

Notez que je ne suis peut-être pas à jour sur les liens TIO lorsque je suis sûr que les modifications les plus récentes n'affectent pas les anciens programmes - vous pouvez les tester si vous le souhaitez, mais en copiant plus de 10 nouveaux liens TIO à chaque fois que je fais un changement devient fatigant après un peu. J'en copie de nouvelles toutes les 5 mises à jour environ.

cQuents v0, A000007

Code pertinent: #|A=1:0;

#|Aattrape l'entrée et est là pour les commentaires Python. =1signifie que le premier élément est 1, :0signifie que les autres le sont 0, génère le ne terme donné n. cQuents v0 a un bug / fonctionnalité étrange qui, lorsqu'un jeton inattendu mais valide, tel que ;, est lu, entraîne la fin de l'analyse.

Essayez-le en ligne!

PingPong, A001478

Code pertinent: #|A=1:0;~@

Sorties via code de sortie. 0 indexé.

#saute le caractère suivant. =ne fait rien ici. 1pousse 1et :imprime 1vers STDOUT. 0pousse 0. )ne fait rien. ;pousse l'entrée, ~saute et pousse -n-1. @se termine. Le code de sortie est le haut de la pile.

Essayez-le en ligne!

axo , A001477

Code pertinent: }{\

0 indexé. }lit et envoie un entier depuis STDIN (nécessite un retour à la ligne pour une raison quelconque), {imprime le haut de la pile et \termine le programme. Je ne suis pas sûr de ce que font les personnages précédents, mais rien qui compte dans ce cas.

Essayez-le en ligne!

brainfuck, A000027

Code pertinent: ,[.,]

Programme de chat simple de esolangs.org. Sort l'entrée.

Essayez-le en ligne!

> <>, A000030

Code pertinent: #...;oi

#renvoie et retourne à droite, qui le dirige vers la lecture io;, qui produit le premier caractère de l'entrée. 0 indexé.

Essayez-le en ligne!

Ruby, A023443

Code pertinent: print (0 and gets.to_i-1...)

0 indexé. Imprime l'entrée moins 1. 0est véridique en Ruby, mais falsey en Python.

Essayez-le en ligne!

Python 3, A000578

Code pertinent: print (0 and gets.to_i-1 or int(input())**(2+(1/2>0)));quit()

Arraché du post original d'HyperNeutrino, mais c'est un polyglotte assez bien connu. quit()termine le programme.

Essayez-le en ligne!

Python 2, A000290

Code pertinent:

#coding:utf-8
print (0 and gets.to_i-1 or int(input())**(2+(1/2>0)));quit()

#coding:utf-8est requis pour que le charbon de bois fonctionne. Également arraché du message original d'HyperNeutrino. quit()termine le programme.

Essayez-le en ligne!

Charbon de bois, A001489

Code pertinent: ⎚I±N»

0 indexé. efface la console (Charcoal imprime ASCII tel quel) et I±Nimprime le négatif de l'entrée. »est une erreur d'analyse et met fin au programme.

Merci à ASCII uniquement pour l'aide au chat.

Essayez-le en ligne!

Cardinal, A020725

Code pertinent:

 x
x%:+.

Ajoute 1 à l'entrée et écrase tous les autres pointeurs.

Essayez-le en ligne!

Stephen
la source
On dirait que le code de sortie pour PingPong est le ToS, il encapsule à 2 ^ 32 comme on pourrait s'y attendre d'un entier signé 64 bits.
Jonathan Allan
@JonathanAllan cool, merci.
Stephen
Avez-vous vraiment besoin de quitter avec une erreur d'analyse si le code Charcoal est déjà à la fin du programme?
MD XF
@MDXF non, j'avais (suis) prévu d'ajouter plus à la fin
Stephen
10

5 langues ( 05AB1E , en fait , CJam , Jelly , MATL ), 7 octets

UD>li)+

Essayez-le en ligne!:

  • 05AB1E : séquence A000027 (entiers positifs: a ( n ) = n ; basé sur 1)
  • En fait : séquence A023443 (entiers non négatifs dont 1: a ( n ) = n −1; basé sur 0)
  • Cjam : séquence A020725 (entiers positifs excluant 1: a ( n ) = n +1; basé sur 1)
  • Gelée : séquence A005843 (nombres pairs non négatifs: a ( n ) = 2 * n ; base 0)
  • MATL : séquence A000290 (carrés: a ( n ) = n 2 ; basé sur 1). Quitte avec une erreur après avoir produit la sortie.
Luis Mendo
la source
7

3 langues: Proton, A000583 ; Python 3, A000578 ; Python 2, A000290

Proton , 49 octets

print(int(input())**(2+(1/2>0)+((''',''')!=',')))

Essayez-le en ligne!

Python 3 , 49 octets

print(int(input())**(2+(1/2>0)+((''',''')!=',')))

Essayez-le en ligne!

Python 2 , 49 octets

print(int(input())**(2+(1/2>0)+((''',''')!=',')))

Essayez-le en ligne!

Explication

Proton n'a pas de '''...'''chaînes, (''',''')devient donc ('' ',' ''), ce qui ne cause pas de problèmes. Il évalue '', faisant (''',''')!=','évaluer True.

Python n'ont ces chaînes, et donc (''',''')est seulement ','donc (''',''')!=','Equivaut à False.

Python 2 utilise la division au sol pour les entiers, donc 1/2>0est faux dans Python 2 et vrai dans Python 3.

HyperNeutrino
la source
Vous pourrez peut-être ajouter d'autres langages si vous transformez la ligne Python en 1//1;print(int(input())**(2+(1/2>0)+((''',''')!=',')));quit()puis ajoutez des langues comme JavaScript par la suite
Stephen
@StepHen Bien sûr, cela pourrait fonctionner, merci. Je le ferai une fois que j'aurai réussi à ajouter JavaScript: P
HyperNeutrino
6

5 langues, 107 octets

s=1/2;1//2;q=int(input())*([2,3][s>0]);"""/.__id__;'
alert(+prompt()+1);`"""#=;#';q=gets
print(q)#)|<>%2)#`

Perl: A000035

En utilisant =comme délimiteur pour les s///moyens, nous pouvons facilement exclure le code que nous ne voulons pas, et en utilisant )comme délimiteur pour les q{}moyens après printing qdans toutes les autres langues, nous pouvons simplement travailler <>directement, sans souci.

s/1...q/i...#/;
print(<>%2)

Essayez-le en ligne!

Rubis: A001477

En Ruby, //est en fait /(diviser par) /.../(correspondance regex), donc tant que la regex est terminée et convertie en nombre, nous pouvons la diviser en toute sécurité. __id__est plus court que .to_s.ord, alors nous contenons juste le reste du code que nous ne voulons pas dans 's, mis qà getset printavec tous les autres.

s=1/2;1//2..."/.__id__;'...';q=gets
print(q)

Essayez-le en ligne!

Python 2: A005843

Utiliser l'astuce standard pour différencier 2 de 3 et enfermer des choses que nous ne voulons pas """et des commentaires.

s=1/2;1//2;q=int(input())*([2,3][s>0]);"""/...`"""
print(q)

Essayez-le en ligne!

Python 3: A008585

Essayez-le en ligne!

JavaScript (navigateur ES6): A000027

Assez simple pour JS, il s'est avéré plus facile de ne pas réutiliser l'existant printet d'opter pour SpiderMonkey, mais cela pourrait également être possible.

s=1/2;1//2;q=int(input())*([2,3][s>0]);"""/.__id__;'
alert(+prompt()+1);`"""#=;#';q=gets
print(q)#)|<>%2)#`

Dom Hastings
la source
3

6 langues: Cubiquement 5/6/7/8/9/10, 44 40 32 octets

Biffé 44 est toujours régulier 44; (

DDR'DDR$:_0?{R'DDRDDB'%0}!{+00%}

Cela imprime:

Explication:

DDR'DDR$:_0?{R'DDRDDB'%0}!{+00%}
DDR'DDR                            get top face sum to 2 (all versions)
       $:                          read input and set notepad to it
         _0                        set notepad to input modulo 2
           ?{...........}          if truthy
             R'DDRDD                reset cube
                    B'              set top face to Cubically version number
                      %0            print top face
                         !{....}   if falsy
                           +00      add 2 to notepad twice
                              %     print

Essayez-le en ligne! (Cubiquement 6x6x6)

MD XF
la source