Anaglot Polygrams


19

Tâche

Écrivez du code qui peut être réorganisé en n programmes différents dans n langues différentes, chacun produisant un nombre distinct de 1 à n.

Il ne doit pas y avoir deux langues identiques, mais des versions différentes de "la même langue" seront considérées comme des langues distinctes, à condition d'avoir des numéros de version principaux différents. Pour ce défi, les environnements REPL ne sont pas distincts de leurs langues parentes mais sont toujours une langue. Chaque langue doit s'exécuter sur une permutation distincte du code source et produire un nombre distinct dans la plage.

Les permutations seront comptées en octets et non en caractères .

Vous devez inclure chaque permutation exécutée avec la langue dans laquelle elle est exécutée à des fins de test.

Notation

Votre score sera le

Équation de notation

Où N est le nombre de langues et L est le nombre de commandes uniques des octets du programme.

L n'est pas égal à la durée du programme

(sauf si le programme est de 1 ou 0 octet)

Voici un script python pour calculer L avec l'aimable autorisation de Conor O'Brien.

L est égal à la longueur de la factorielle du programme si et seulement s'il n'y a pas d'octets répétés dans le programme.

Le but est de maximiser votre score.



les commentaires sont-ils autorisés?
2017

@ Adám Il n'y aurait aucun moyen raisonnable d'interdire les commentaires
Wheat Wizard

Donc, si #le symbole de commentaire est en 5 langues, la bonne solution serait1#2345
Adám

@ Adám qui vous donne un score de 1/6. Je suis sûr qu'un score de 1 est facilement possible avec un programme à 2 octets (ou un programme à 1 octet d'ailleurs). Et ajouter plus de chiffres réduit votre score.
Martin Ender

Réponses:


30

34 langues, 19 octets, score: 38 832 018 459 912 437 760 000

Voici une réponse rapide que j'ai jeté ensemble pour montrer qu'il est possible d'obtenir une réponse avec un score supérieur à 1.

 12233echo*+--@#..;

1. NTFJ

#*22331+..@o;-- ech

Cela sort via un code de caractère, qui est autorisé par un méta consensus .

Essayez-le ici

2. Tcsh

echo 2;#..1@2+33*--

3. 05AB1E

2231*+..@echo ;--#3

Essayez-le en ligne!

4. En fait

@..o; eho1#c3223-*+-

Essayez-le en ligne!

5. Befunge 98

23+.@.21*#3o;-- ech

Essayez-le en ligne!

6. Cubix

123+23*o@#;-- ech..

Sorties par code de caractère

Essayez-le ici

Code déplié:

    1 2
    3 +
2 3 * o @ # ; -
- e c h . . . .
    . .
    . .

7. Haskell 8 REPL

3+2*2 --31#;@..echo

8. Sérieusement

@..o; eho1#c3223-+*-

Essayez-le en ligne!

9.> <>

33*o;2+..@#12-- ech

Sorties par code de caractère

Essayez-le en ligne!

10. Befunge

33*1+.@.#22o;-- ech

Essayez-le en ligne!

11. brainbool

323*+..@echo ;--#12

Essayez-le en ligne!

12. 2sable

233*+..@echo ;--#12

Essayez-le en ligne!

13. Hexagonie

13;2#2+@*3o-- ech..

Sorties par code de caractère

Essayez-le en ligne!

Code déplié:

  1 3 ;
 2 # 2 +
@ * 3 o -
 - e c h
  . . .

14. R

12+2#*33..@o; ech

Essayez-le en ligne!

15. bc

12+3#*23..@o;-- ech

16. Python 3 REPL

13+3#*22..@o;-- ech

17. irb (Ruby 2.4 REPL)

13+2*2#3..@o;-- ech

18. PowerShell

12+2*3#3..@o;-- ech

19. Python 2 REPL

13+2*3#2..@o;-- ech

20. Python 1.6.1 REPL

23-3#-+*21..@o; ech

21. Ksh

echo 21;#..2@3+3*--

22. Bash

echo 22;#..1@3+3*--

23. Zsh

echo 23;#..1@2+3*--

24. Applescript

23+1 --#2*3..@o;ech

25. Lua REPL

23+2 --#1*3..@o;ech

26. Julia REPL

23+3 #2*1..@o;--ech

27. irb (Ruby 1.9.3 REPL)

13*2+3-2 #..@o;-ech

28. Haskell 7 REPL

13*2+2--3#;@.. echo

29. J

echo --1#.23;@+2*.3

Essayez-le en ligne!

30. Nim

echo 33-2-1;#..@2+2*

31. poisson

echo 31;#3-2-..@2+2*

32. PHP

echo 32;#+123*@..--

<?phpn'est pas nécessaire en raison de cette méta

Essayez-le en ligne!

33. Golfscript

3.#.1223*@+o;-- ech

Essayez-le en ligne!

34. Octave

33+1 #22echo*--@..;

Essayez-le en ligne!


5
Et c'est pourquoi je déteste les langues compatibles REPL
M. Xcoder

1
Si vous ajoutez .une autre langue, vous pouvez en avoir 11. J:2#.2+3*3
Conor O'Brien

@WheatWizard ici
Conor O'Brien


@WheatWizard J est techniquement un REPL. Préfixez le code avec echo pour voir la sortie.
Conor O'Brien

11

1 langue, 0 octet, score 1

Je ne sais pas comment des scores élevés seront obtenus dans ce défi, alors prenons cette place.


Essayez-le en ligne!

Dans Retina, le programme vide sans entrée s'imprime 1.

Score = 1! / 0! = 1/1 = 1


7
Cela ressemble à première vue à une plaisanterie, mais a le score le plus élevé jusqu'à présent ...
trichoplax

Même score pour une entrée de langue unique de 1 octet, non?
2017

@ Adám ouais, comme 1dans R, par exemple
Giuseppe

5
En gelée, cela sort 0, donc 2 langues => score = 2
M. Xcoder

5
@ Mr.Xcoder Non, ce n'est pas ainsi que fonctionne la notation. Vous devez sortir 1 à n et chacun doit être sur une permutation distincte.
Wheat Wizard

6

2 langues, 2 octets, score 1

Ne bat pas la réponse de Leo, mais je pensais que je présenterais une solution en 2 langues (enfin, et Wheat Wizard ninja avait une réponse de score 2 entre les deux de toute façon).

Rétine , impressions1

2`

Essayez-le en ligne!

C'est essentiellement le même que le programme vide de Leo.

Pyth , imprimés2

`2

Essayez-le en ligne!

C'est repr(2)ainsi qu'il calcule "2"ce qui est imprimé en tant que 2.


5

26 langues, 46 octets, score: 1.68861953e-28 (0.000000000000000000000000000168861953)

Toutes les langues sont des langues traditionnelles (c'est-à-dire qu'elles sont réellement utilisées par les personnes en développement) et il n'y a de solution REPL dans aucune langue. Cette réponse ne gagnera jamais, mais ce n'est pas une raison pour ne pas la publier ...

//#**print()ale123456789+chous :f{}:""enttd *;

1. Python 2

print 1#//**()alechous:f{}:23456789+ ""enttd*;

Essayez-le en ligne!

2. Python 3

print(2)#//**alechous13456789+: f{}: ""enttd*;

Essayez-le en ligne!

3. Rubis

puts 3#//**()alecho:f12456789+{}rin: ""enttd*;

Essayez-le en ligne!

4. CoffeeScript

alert 4#//**()pinchous:12356789+f{}: ""enttd*;

Essayez-le en ligne!

5. PHP

echo 5/*alrt#()pinus:f{:12346789+} ""enttd;**/

Essayez-le en ligne!

6. Perl 5

print 6#/*ale()chous:12345789+f{:} */""enttd*;

Essayez-le en ligne!

7. Perl 6

print 7#/*ale)(chous:f12345689+{:} */""enttd*;

Essayez-le en ligne!

8. JavaScript (ES5)

alert(8)//pin 12345679+#*chous:f{:} *""enttd*;

Essayez-le en ligne!

9. JavaScript (ES6)

alert(9)//inp 12345678+#*chous: f{:}*""enttd*;

Essayez-le en ligne!

10. JavaScript (ES7)

alert(9+1)//pni #*chous2345678: f{:}*""enttd*;

Essayez-le en ligne!

11. Lot

echo 9+2 ::alrt()//pni#*usf{1345678}*""enttd*;

Impossible de trouver un interprète en ligne pour celui-ci. Essayez d'exécuter ce code dans l'invite de commandes, si vous êtes sous Windows.

12. Bash

echo 12 #::alrt(3456789+)//pni*usf{}*""enttd*;

Essayez-le en ligne!

13. CSS

*:after{content:"13" /*h# l(2456789+)pisud;*/}

Essayez-le en ligne!

14. Moins

*:after{content:"14" /*#h l(2356789+)pisud;*/}

Essayez-le en ligne!

15. Stylet

*:after{content:"15" /*#hl (2346789+)pisud;*/}

Essayez-le en ligne!

16. TypeScript

alert(16)//inp #*chous2345789+: :{f}*""entt*d;

Essayez-le en ligne!

17. Octave

disp(17)#//n *chou2345689+: :{f}*""entt*alert;

Essayez-le en ligne!

18. Swift

print(18)//ds# *chou2345679+: :{f}""ent*ale*t;

Essayez-le en ligne!

19. Julia

print(19)#ds// *chou2345678+: :{f}""ent*ale*t;

Essayez-le en ligne!

20. Maxima

print(18+2);/*#ds ouch 345679::{f}""entale*t*/

Essayez-le en ligne!

21. Clojure

(print "21");/*#ds ouch3456789+::{f}entale*t*/

Essayez-le en ligne!

22. Groovy

print 19+3//();*#ds oh245678::{fuc*}entalet*""

Essayez-le en ligne!

23. CommonLisp

(print 23);//*#ds oh1456789+::{fuc*}entalet*""

Essayez-le en ligne!

24. EmacsLisp

(print 24);//*#ds oh1356789+::{fuc*}entalet*""

Essayez-le en ligne!

25. PicoLisp

(print 25);//*#ds oh1346789+::{fuc*}entalet*""

Essayez-le en ligne!

26. Logo

print 21+5 ;//*#dsoh346789::{fuc*}entalet*""()

Essayez-le en ligne!


1
Et Swift, affichant 18:print(18)//#**alechous: f{}:2345679+ ""enttd*
M. Xcoder

Supposons que cela augmentera votre score d'environ 0,002e-20 :))
M. Xcoder

3
pfft. 2017 sera l'année du Befunge Web Framework!
Skyler

Les commentaires vont juste transformer toute cette question en folie…
Mathime

btw Applescript qui peut être vu dans ma réponse fonctionne sans REPL, mais nécessite --des commentaires. Si vous ajoutez, --vous pouvez probablement également travailler dans au moins un type de haskell.
Wheat Wizard

3

12 langues, 16 octets - Score: 0,003

print(0b11000)#1

Imprime 1en 2sable

print(0b1100)#10

Imprimer 10en 05AB1E

print(0b11)#1000

Réorganiser les nombres binaires imprime 2-9, 11-12 en:

  • Cristal
  • Julia 0.5
  • J-uby
  • Lis
  • Perl 5
  • Perl 6
  • Python 3
  • Python 2
  • Python
  • Rubis

L = 145297152000 12! = 479001600

Je viens d'utiliser TiO pour une liste de langues valides pour cela (si elles sont toutes considérées comme uniques?). Suppression de certaines langues en double grâce à l'entrée de l'assistant de blé. Cette réponse semble assez faible, même si je pense qu'elle a du potentiel.


Julia 0.4 et 0.5 ont le même numéro de version majeur. Et il en va de même pour Python 2 (PyPy) et Python 2. Cependant, cela fonctionnera probablement dans Python 1
Wheat Wizard

Pouvez-vous laisser la copie et l'appeler repl? Combien d'entre eux ont des réponses?
Brian McCutchon

@BrianMcCutchon Lily, Perl et Crystal n'ont pas de réponses. Tous les autres le font.
Wheat Wizard

1

JavaScript (ES6), Python 2, Python 3, Japt, 4.735e-15

# ()//1234=>inprt

ES6 (1)

p=>1//rint 234()#

Python 2 (2)

print 2#134=>//()

Python 3 (3)

print(3)# 124=>//

Japt (4)

#rint>=3/2)p (4/1

Votre score est 4.73508590206e-15btw.
Wheat Wizard

C'est ça? 4 factorielle est 24. Cela divisé par 17 est à peu près 1,4
Luke

Pas divisé par 17 mais par 5068545850368000, le nombre de façons de réorganiser la chaîne.
Wheat Wizard

Oups. J'ai mal lu ça. Merci de l'avoir signalé.
Luke

@WheatWizard Aïe, j'ai aussi raté ça.
Adám
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.