Poligrafi di anaglota


19

Compito

Scrivi del codice che può essere riorganizzato in n programmi diversi in n lingue diverse, ciascuna delle quali genera un numero distinto da 1 a n.

Non esistono due lingue uguali, tuttavia versioni diverse della "stessa lingua" saranno considerate lingue distinte, purché abbiano numeri di versione principali diversi. Per questa sfida gli ambienti REPL non sono distinti dalle loro lingue madri ma sono ancora una lingua. Ogni lingua dovrebbe essere eseguita su una permutazione distinta del codice sorgente e produrre un numero distinto nell'intervallo.

Le permutazioni verranno conteggiate in byte, non in caratteri .

È necessario includere ogni permutazione eseguita con la lingua in cui viene eseguita a scopo di test.

punteggio

Il tuo punteggio sarà il

Equazione di punteggio

Dove N è il numero di lingue e L è il numero di ordinamenti univoci dei byte dei programmi.

L non è uguale alla lunghezza del programma

(a meno che il programma non sia 1 o 0 byte)

Ecco una sceneggiatura in pitone per calcolare L per gentile concessione di Conor O'Brien.

L è uguale alla lunghezza del programma fattoriale se e solo se non ci sono byte ripetuti nel programma.

L'obiettivo è massimizzare il tuo punteggio.



sono ammessi commenti?
Adám,

@Adám Non ci sarebbe alcun modo ragionevole per vietare i commenti
Wheat Wizard

Quindi, se #il simbolo del commento è in 5 lingue, una buona soluzione sarebbe1#2345
Adám,

@Adám che ti dà un punteggio di 1/6. Sono sicuro che un punteggio di 1 è facilmente possibile con un programma a 2 byte (o un programma a 1 byte per quella materia). E l'aggiunta di più cifre riduce il punteggio.
Martin Ender,

Risposte:


30

34 lingue, 19 byte, punteggio: 38.832.018.459.912.437.760.000

Ecco una risposta rapida che ho messo insieme per dimostrare che è possibile ottenere un punteggio di risposta migliore di 1.

 12233echo*+--@#..;

1. NTFJ

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

Questo genera un codice carattere, che è consentito dal meta consenso .

Provalo qui

2. Tcsh

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

3. 05AB1E

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

Provalo online!

4. In realtà

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

Provalo online!

5. Befunge 98

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

Provalo online!

6. Cubix

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

Output per codice carattere

Provalo qui

Codice non spiegato:

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

7. Haskell 8 REPL

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

8. Seriamente

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

Provalo online!

9.> <>

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

Output per codice carattere

Provalo online!

10. Befunge

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

Provalo online!

11. brainbool

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

Provalo online!

12. 2sable

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

Provalo online!

13. Esagonia

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

Output per codice carattere

Provalo online!

Codice non spiegato:

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

14. R

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

Provalo online!

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

Provalo online!

30. Nim

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

31. pesce

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

32. PHP

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

<?phpnon è necessario a causa di questo meta

Provalo online!

33. Golfscript

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

Provalo online!

34. Ottava

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

Provalo online!


5
Ed è per questo che odio le lingue compatibili con REPL
Mr. Xcoder

1
Se aggiungi .e un'altra lingua, puoi avere 11. J:2#.2+3*3
Conor O'Brien

@WheatWizard qui
Conor O'Brien,


@WheatWizard J è tecnicamente un REPL. Prefisso il codice con echo per vedere l'output.
Conor O'Brien,

11

1 lingua, 0 byte, punteggio 1

Non so quanto saranno alti i punteggi in questa sfida, quindi prendiamo questo posto.


Provalo online!

In Retina, il programma vuoto senza input viene stampato 1.

Punteggio = 1! / 0! = 1/1 = 1


7
A prima vista sembra una risposta scherzosa, ma ha il punteggio più alto finora ...
trichoplax

Stesso punteggio per una voce in una sola lingua da 1 byte, no?
Adám,

@Adám sì, come 1in R, ad esempio
Giuseppe,

5
In gelatina, questo genera 0, quindi 2 lingue => punteggio = 2
Mr. Xcoder

5
@ Mr.Xcoder No, non è così che funziona il punteggio. È necessario emettere da 1 a n e ciascuno deve essere su una permutazione separata.
Wheat Wizard

6

2 lingue, 2 byte, punteggio 1

Non batte la risposta di Leo, ma ho pensato di presentare una soluzione in 2 lingue (beh, e Wheat Wizard ninja avrebbe comunque ottenuto una risposta di punteggio 2 tra una e l'altra).

Retina , stampe1

2`

Provalo online!

Questo è essenzialmente lo stesso del programma vuoto di Leo.

Pyth , stampe2

`2

Provalo online!

Questo è repr(2)così che calcola "2"che viene stampato come 2.


5

26 lingue, 46 byte, Punteggio: 1.68861953e-28 (0.000000000000000000000000000168861953)

Tutte le lingue sono quelle tradizionali (cioè sono effettivamente utilizzate dalle persone in sviluppo) e non esiste una soluzione REPL in nessuna lingua. Questa risposta non vincerà mai, ma non è un motivo per non pubblicarla ...

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

1. Python 2

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

Provalo online!

2. Python 3

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

Provalo online!

3. Rubino

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

Provalo online!

4. CoffeeScript

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

Provalo online!

5. PHP

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

Provalo online!

6. Perl 5

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

Provalo online!

7. Perl 6

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

Provalo online!

8. JavaScript (ES5)

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

Provalo online!

9. JavaScript (ES6)

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

Provalo online!

10. JavaScript (ES7)

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

Provalo online!

11. Lotto

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

Impossibile trovare un interprete online per questo. Prova a eseguire questo codice nel Prompt dei comandi, se sei su Windows.

12. Bash

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

Provalo online!

13. CSS

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

Provalo online!

14. Meno

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

Provalo online!

15. Stilo

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

Provalo online!

16. TypeScript

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

Provalo online!

17. Ottava

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

Provalo online!

18. Swift

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

Provalo online!

19. Julia

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

Provalo online!

20. Maxima

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

Provalo online!

21. Clojure

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

Provalo online!

22. Groovy

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

Provalo online!

23. CommonLisp

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

Provalo online!

24. EmacsLisp

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

Provalo online!

25. PicoLisp

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

Provalo online!

26. Logo

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

Provalo online!


1
E Swift, mostrando 18:print(18)//#**alechous: f{}:2345679+ ""enttd*
Mr. Xcoder

Supponiamo che questo aumenti il ​​tuo punteggio di circa 0,002e-20 :))
Mr. Xcoder,

3
pfft. Il 2017 sarà l'anno del Befunge Web Framework!
Skyler,

I commenti trasformeranno l'intera domanda in follia ...
Mathime,

btw Applescript che può essere visto nella mia risposta funziona senza un REPL, ma richiede --commenti. Se aggiungi --puoi probabilmente lavorare anche in almeno un tipo di haskell.
Wheat Wizard

3

12 lingue, 16 byte - Punteggio: 0,003

print(0b11000)#1

Stampa 1in 2 colori

print(0b1100)#10

Stampa 10in 05AB1E

print(0b11)#1000

Riorganizzare i numeri binari stampa 2-9, 11-12 in:

  • Cristallo
  • Julia 0.5
  • J-Uby
  • Giglio
  • Perl 5
  • Perl 6
  • Python 3
  • Python 2
  • Pitone
  • Rubino

L = 145297152000 12! = 479001600

Ho appena usato TiO per un elenco di lingue valide per questo (se queste sono tutte considerate uniche?). Rimosse alcune lingue duplicate grazie all'input da Wheat Wizard. Questa risposta sembra piuttosto bassa, sebbene ritenga che abbia un potenziale.


Julia 0.4 e 0.5 hanno lo stesso numero di versione principale. E così fa Python 2 (PyPy) e Python 2. Tuttavia, probabilmente funzionerà in Python 1
Wheat Wizard

Puoi lasciare la stampa e chiamarla sostituire? Quanti di questi hanno sostituti?
Brian McCutchon,

@BrianMcCutchon Lily, Perl e Crystal non hanno sostituti. Tutti gli altri lo fanno.
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

Il tuo punteggio è 4.73508590206e-15compreso.
Wheat Wizard

È? 4 fattoriale è 24. Quello diviso per 17 è approssimativamente 1.4
Luca

Non diviso per 17 ma per 5068545850368000, il numero di modi per riorganizzare la stringa.
Wheat Wizard

Ops. Ho letto male. Grazie per segnalarlo.
Luca,

@WheatWizard Ouch, mi mancava anche quello.
Adám,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.