Hello, polyglot!
ãã£ãã: るびま ãããèªãã§polyglotãããã¼ã£ã¦æã£ãï¼
ä»åã®ã³ã³ã»ããã¯
- åãã¦ãªã®ã§ããããHello, world!
- 好ããªè¨èªãçãè¾¼ã
- 140æå以ä¸
以ä¸ï¼Schemeã¨è¨ãã¤ã¤Gauche決ãæã¡ã§ããï¼
ã½ã¼ã¹ã³ã¼ã
ã§ãããã£ãã®ãããï¼
;(#)={-"^<"v 'v+55p44p41< (define puts print) ;')#>:#,_@-}0;puts=putStrLn;main= (puts"Hello, world!")
è¨èªç´¹ä»
Scheme
Så¼ã¨å¼ã°ããåç´ãªææ³ã§è¨è¿°ããè¨èªï¼æ¬å¼§ã§æ¬ãã¨ä½ããèµ·ããï¼è¡ã³ã¡ã³ã ;
ãã¹ãå¯è½ãªãããã¯ã³ã¡ã³ã #| ... |#
ã«å ãã¦å¼ãä¸ã¤ã³ã¡ã³ãã¢ã¦ãããå¼ã³ã¡ã³ã #; expr
ãããï¼
"
ã¯æååãªãã©ã«ã«ä½¿ããããï¼ '
ã¯quoteã¨ãã£ã¦ç¶ãå¼ã¯è©ä¾¡ããããªãã©ã«ã«ãªãï¼'foo
ã¯ã·ã³ãã«ã¸ï¼'(foo bar baz)
ã¯ãªã¹ãã¸ã¨èªã¾ããï¼
ããããªæåãèå¥åã«ä½¿ããã®ãç¹å¾´ï¼+ - < >
ãªã©ï¼
Ruby
ç¬ç¹ã®è¤éãªææ³ã§è¨è¿°ããï¼æ¹è¡ãæå³ãæã¤ã¿ã¤ãã®è¨èªï¼ãã¡ãã¡ã§æ¬å¼§ãçç¥ã§ããï¼#
ã§è¡ã³ã¡ã³ãã¯ã§ãããï¼è¤æ°è¡ã³ã¡ã³ãã¯ã¡ãã£ã¨ä½¿ãè¾ãï¼
"
㨠'
ã¯ã©ã¡ããæååãªãã©ã«ã«ä½¿ãããï¼ä¼¼ããããªãã®ã« /
ã§éå§ããæ£è¦è¡¨ç¾ãªãã©ã«ãããä»ï¼%!...!
ã %q!...!
(!
ã¯ä»»æã®éè±æ°å)çã®å¤æ§ãªãªãã©ã«ãæã¤ï¼
Haskell
ã¤ã³ãã³ããæå³ãæã¤ã¿ã¤ãã®è¨èªï¼ãããã¬ãã«ã«ã¯(å¤å)宣è¨ã¨å®ç¾©ããæ¸ããªãã®ã§ï¼ä»å使ç¨ããè¨èªã®ä¸ã§ã¯æãææ³ä¸ã®å¶ç´ãå¼·ãï¼è¡ã³ã¡ã³ã㯠--
ãã¹ãå¯è½ãªãããã¯ã³ã¡ã³ã㯠{- ... -}
ã§ã§ããï¼
éçåä»ãè¨èªãªã®ã§ï¼åã®æ´åæ§ãåããªããã°ãªããªãï¼
Befunge
1æå1å½ä»¤ã§ï¼å®è¡ã®åããå¤ããªããäºæ¬¡å
æ ¼åç¶ã®ã³ã¼ããå®è¡ãã¦ããé£è§£è¨èªï¼ã³ã¡ã³ãã®ããã®æ©è½ã¯ç¡ããï¼æå³ã®ããå½ä»¤ä»¥å¤ã¯ç¡è¦ãããï¼
ã¹ã¿ãã¯åï¼å°ããæ´æ°ãæ±ãäºãã§ããï¼å®è¡ä¸ã®ã³ã¼ããèªã¿æ¸ãã§ããï¼
Schemeçè²ç
;(#)={-"^<"v 'v+55p44p41< (define puts print) ;')#>:#,_@-}0;puts=putStrLn;main= (puts"Hello, world!")
Rubyçè²ç
;(#)={-"^<"v 'v+55p44p41< (define puts print) ;')#>:#,_@-}0;puts=putStrLn;main= (puts"Hello, world!")
Haskellçè²ç
;(#)={-"^<"v 'v+55p44p41< (define puts print) ;')#>:#,_@-}0;puts=putStrLn;main= (puts"Hello, world!")
Befungeçè²ç
;(#)={-"^<"v
'v+55p44p41<
(define puts print)
;')#>:#,_@-}0;puts=putStrLn;main=
(puts"Hello, world!")
解説
1è¡ç®
Schemeãã³ã¡ã³ãã¢ã¦ãï¼Haskellã§ã¯æ¼ç®å (#)
ã®å®ç¾©ã®éä¸ãã4è¡ç®ã®éä¸ã¾ã§ã³ã¡ã³ãã¢ã¦ãï¼ããã«ãã£ã¦Rubyãéãæ¬å¼§ã ããã¦ã³ã¡ã³ãã¢ã¦ãï¼Befungeã§ã¯ååã¯ç¡æå³ãªã³ã¼ãã§ï¼å¾åã«ã³ã¼ãæ¸ãæãç¨ã®æåãã¹ã¿ãã¯ã«ç©ãã§ä¸ã¸ï¼
2è¡ç®
Schemeã§ã¯ quote
ã«ããé¢è±ï¼åæã«Rubyã¯4è¡ç®ã®é ã¾ã§æååãªãã©ã«ã«ããé¢è±ï¼Befungeã§ã¯ãããå³ããå®è¡ãã¦ãã¦ï¼5è¡ç®ã®æååãèªãããã®å½ä»¤ã5è¡ç®ã«æ¸ãè¾¼ãï¼
3è¡ç®
Schemeã§putsãå®ç¾©ï¼Rubyã¯æååãªãã©ã«ä¸ï¼Haskellã¯ã³ã¡ã³ãä¸ï¼Befungeã¯ç´ éãã§ããããå½±é¿ç¡ãï¼
4è¡ç®
Schemeã¯ã³ã¡ã³ãã¢ã¦ãï¼Rubyã¯ããã§æååãªãã©ã«ãã復帰ãã¦æ¬å¼§ãéãï¼ãã¨ã¯ã³ã¡ã³ãï¼Befungeã§ã¯ãã >:#,_
ãåºåé¨ã«ãªã£ã¦ãã¦ï¼ã¹ã¿ãã¯ã«ç©ã¾ããæååãåºåãçµäºããããã«ãªã£ã¦ããï¼å¾åã¯Haskellãã³ã¡ã³ããã復帰ãï¼(#)
ã®å®ç¾©ãçµã㦠puts
ãå®ç¾©ï¼main=
ãç½®ãã¦ããï¼
5è¡ç®
Schemeï¼Rubyï¼Haskellã¯ããã§åºåï¼Befungeã¯ã³ã¼ãæ¸ãæãã«ãã
;(#)={-"^<"v 'v+55p44p41< (define puts print) ;')#>:#,_@-}0;puts=putStrLn;main= <pu^s"Hello, world!")
ã¨ãªã£ã¦ãã¦ï¼ããã§åºåããæååãã¹ã¿ãã¯ã«ç©ãï¼ããã¦4è¡ç®ã®åºåé¨ã¸è¡ãï¼åºåãã¦çµäºï¼
ã¾ã¨ã
æååãªãã©ã«é¨ãå
±æã§ãã¦ã¦ããæãï¼æåã¯ãã£ã¨ãããããããªã³ã¼ããæ¸ãã¦ããã¤ããã ã£ãã®ã ãã©ï¼ç¸®ãã¦ãããã¡ã«ã·ã³ãã«ã«ãªã£ã¦ãã£ãï¼åç´ã¯çãï¼
ææ³çã«ã¯Haskellã®å¶ç´ãå¼·ãä¸æ¹ï¼ã·ã§ã¼ãã³ã¼ãã£ã³ã°ã¨ãã¦ã¯Befungeã®æ§æ ¼ãå¼·ãåºãï¼
没ã³ã¼ãé
ãã®1
;{->{55+48+v (define putStr display) '|#:\g5+9: <-1_' }=>0};alias putStr puts #>:#,_@|;-}main= (putStr"Hello, world!\n")
121æï¼(define putStr display)
ãRubyã§ãææ³ä¸ã¯å¦¥å½ãªãã¨ãå©ç¨ãï¼ã©ã ãå¼ ->{ ... }
ãã³ã¡ã³ãçã«å©ç¨ããã³ã¼ãï¼Rubyã§ã¯æ¬å¼§ãè£ã㨠(define(putStr(display())))
ã¨è§£éãããï¼å®è¡ãããªããã°ã©ãã¨ãããã¨ã¯ãªãï¼1è¡ç®ã® 55+48+v
ã¯Befungeã®ããã®ã³ã¼ãã ãï¼2è¡ç®ã¨åæ§ã«Rubyã§ãææ³OKãªã®ã§æ¸ããï¼
Scheme㧠|...|
ãä¸ã¤ã®ã·ã³ãã«ã«ãªããã¨ãå©ç¨ããå¼ã³ã¡ã³ããæ°æã¡ããï¼
åºåé¢æ°ã®ååã¯Haskellã® putStr
ã«åããã¦ããï¼
Befungeã¯æååãªãã©ã«é¨åãgå½ä»¤ã§èªã¿åãããã«ãªã£ã¦ãã¦ï¼é·ããåãè¾¼ã¿ãªã®ãã¡ãã£ã¨æ®å¿µï¼
ãã®2
eval'=eval'&&'p' {-0=>(alias putStr puts)} "> 55+48+v |#:\g6++49:<-1_ >:#,_@"#t(define putStr display)' ;#-}where _&&x=x main=(putStr"Hello, world!\n")
153æï¼eval
ãSchemeã§ãRubyã§ãå®ç¾©ããã¦ãã¦ï¼Befungeãä¸ã«è±åºã§ããã®ãå©ç¨ããã³ã¼ãï¼Befungeã®å¤ãªã³ã¼ããªããå
¨é¨æååã«ãã¡ããã°ç°¡åãããªããã¨ããã³ã³ã»ããï¼ãããé·ããªããããï¼ä¼¼ããããªæ¹æ³ã« format
ã使ãæãããï¼
ãã®3
;{->{55+48+v (define puts print) '|#:\g4+7:<-1_' }=>':#,_@|;'}#-}puts=putStrLn;main= (puts"Hello, world!")
108æï¼ãã®1ã®æ¹è¯çï¼åºåé¢æ°ã®ååã¯Rubyã® puts
ã«åããã¦ããï¼
ãã®4
;{->{"2^<"^ (define puts print) '|0/5p42p4<' }=>':#,_@|1;'}#-}puts=putStrLn;main= (puts"Hello, world!")
104æï¼ãã®3ã®æ¹è¯çï¼Befungeã®ã¢ããã¼ããå¤ãã¦ï¼æååã®é·ããåãè¾¼ã¿ã§ãªããªã£ãï¼