변장 프로그램 작성 [폐쇄]


14

문제는 다른 언어처럼 보이지만 HQ9 + 문제 중 하나 를 해결하는 프로그램을 만드는 입니다.

참고 : 이것은 골프 도전이 아닙니다.

규칙 :

  • 프로그램은 실행될 때 다음 작업 중 하나를 수행해야합니다.
    • "Hello, World!"를 인쇄하십시오.
    • 전체 소스를 인쇄하십시오.
    • 가사를 "벽에 99 병의 맥주"로 인쇄하십시오 ( 여기 참조 ).
  • 언뜻보기에 프로그램은 다른 언어처럼 보일 것입니다.

채점

  • 규칙을 만족시키는 작업 프로그램. +3
  • "다른 언어"를 실행할 수있는 경우 보너스 포인트 (구문 유효). +1
  • "다른 언어"가 유용한 것을 할 수 있다면 더 많은 점이 있습니다. +3
  • 더 많은 언어로 프로그램에 유효하고 유용한 보너스 포인트가 많이 있습니다. 2 개 이상의 언어마다 +5

1
그들은 어떻게 등급이 매겨 집니까? 객관적인 기준이 필요합니다. 여기를 확인하십시오 : codegolf.stackexchange.com/help/on-topic
MrZander

좋아, 나는 포인트 시스템을 추가하고 있습니다.
케빈 콕스

1
그래서 ... 당신은 polyglot을 찾고 있습니까?
Iszi

예. 그러나 한 언어를 제외한 모든 언어의 기능을 어느 정도 "숨김"하는 데 중점을 둡니다.
Kevin Cox

4
print ("Hello, World");그 자체로 많은 언어로 실행됩니다
marinus

답변:



18

루비 + C + 공백.

이 프로그램은 C이지만 Ruby처럼 보이고 실행됩니다. 나는 또한 거기에 약간의 공백을 던졌습니다.

C는 자체 소스를 인쇄합니다 (불행히도 퀘인은 아닙니다). 루비는 맥주 99 병을 인쇄하고 공백은 안녕이라고 말합니다.

#include <stdio.h>  
#define def int          
#define beer main(int i){char b[1024];          
#define print(v) print(int v){            
#define end ;}                
#define if(x) fputs(b,stdout); fgets(b,1024,f); if(x){               
#define else ;} else{                       
#define puts                    
#define print        
#define open(fn) FILE *f = fopen(fn,"r");             
#define while(x) fgets(b,1024,f); while(!feof(f)){                      


def beer                
    # define beer      

    open("test.c")

   i=100;


    while ( i >= 0 )
        if ( i > 0 )
            print "#{i} bottle#{i==1&&''||'s'} of beer on the wall, "
            puts  "#{i} bottle#{i==1&&''||'s'} of beer."
            print "Take one down and pass it around, "
            puts  "#{i-1} bottle#{i==2&&''||'s'} of beer on the wall."
            puts
        else
            puts "No more bottles of beer on the wall, no more bottles of beer."
            puts "Go to the store and buy some more, 99 bottles of beer on the wall."
        end
        i -= 1
    end

    return 0      
end

beer

그리고 SO가 ws에 좋지 않기 때문에 여기에 링크가 있습니다.


15

골프 스크립트 / HQ9 +

9

99 병의 맥주에 가사를 인쇄하는 HQ9 + 프로그램의 두 배인 Golfscript quine.

나는 이것이 골프 도전이 아니라는 것을 알고 있지만, 한 캐릭터로 이것에 대답하려는 욕구에 저항 할 수 없었습니다.


1
그리고 나는 HQ9 +가 다른 언어처럼 보이지 않을 것이라고 생각하기에 어리 석었습니다 .D
Kevin Cox

5
예! 그리고 그것은 "9"라는 숫자로 보입니다.
Pierre Arlaud

7

펄, 7 점

99 <?php
for($i='no more',$_="`\2l\";7hF'`-{9\17p\t\2ZY\14fE\25T\133J`\35l\"76~\x3";
99>${2}="$i bottle".(${$i+=1}<'))'?+s?:s:!'((').' of beer';
${3}="
Take one down and pass it around, ${1}.

".ucfirst("${1}, ${2}.${3}"))${1}=$i||${2}?"${2} on the wall":'?;\'';
print substr("${1}, ${2}.${3}".
($_^"jE\3\2OXH2O\5\15\10M$_").", ${2} on the wall.",3,13*$i*$i);

이것은 인쇄하는 Perl 프로그램입니다 Hello, World!.

점수 분석 :

  • 모든 규칙을 준수합니다 : +3
  • 다른 언어로 된 유효한 구문 : +1
  • 다른 언어에서 흥미로운 점이 있습니다 : +3

사이드 노트 :

그것이 무엇인지 알면 행 아웃이 '명백한'것처럼 보일지 모르지만 이것은 속임수입니다.

다음과 같은:

$_="`\2l\";7hF'`-{9\17p\t\2ZY\14fE\25T\133J`\35l\"76~\x3";
print$_^"jE\3\2OXH2O\5\15\10M$_"

출력합니다 :

Go to the store and buy some moreET[J`l"76~

7

자바 스크립트, 7 포인트

<!--
h='Hello, World!'
-->

/******<br>

<b>Hello, World!</b><br>

*******<br>

This is my <i>awesome</i> Hello World page<br>

*******<br>

Look I can make images I'm so good at HTML:<br>
<img src='http://pieisgood.org/images/slice.jpg' alt='awwww you cannot see my amazing image' /><br>
<hr>

These are the things this page has:<br>
<ul>
<li>Bold</li>
<li>Italics</li>
<li>Images</li>
<li>Lists</li>
</ul><br>

I like random characters! That's what this page will finish with:<br>
;37!&$89]"]0(!)89^!&8*/81+-0;h

JavaScript로 실행하면 "Hello, World!"가 생성됩니다.

HTML로 볼 때 다음과 같습니다.

스크린 샷

채점

  • 규칙 +3 을 만족시키는 작업 프로그램
  • 다른 언어 구문은 유효합니다 +1
  • 다른 언어는 유용한 일을합니다 (원하는 HTML을 넣을 수 있습니다) +3

교활한! 그러나이를 평가하는 구현은 마지막 명령문의 완료 값을 stdout에 인쇄한다고 가정합니다.
FireFly

@FireFly 예, eval모든 콘솔이하는 일입니다.
Doorknob

evalstdout에 인쇄하지 않습니다. 함수 호출 표현식의 결과로이를 리턴합니다. 하지만 그래, 난 단지 nitpicking입니다; 죄송합니다. : p
FireFly

6

C ++ / 파이썬

#include <iostream>

#define print(a) int main() {std::cout << a << std::endl;}

print("Hello, World!")

Python (2.x 및 3.x)에서 실행되고 C ++로 컴파일되어 인쇄 (캐리지 리턴)됩니다.

안녕, 월드!


5

다음은 "Hello, World"(및 임의의 테이블)를 HTML 및 "Hello, World!"로 인쇄합니다. 의 공백 .

<html>             
<head>  
<title>                     
Hello,World!    
</title>                      
<body>  
<p>                       
Hello,World!    
</p>                            
<table> 
<caption>                 
Summary 
</caption>           
<tbody> 
<tr>                            
<th>Year</th>   
<th>Revenue</th>                            
</tr>   
<tr>                     
<td>2012</td>   
<td>$100,000</td>                     
</tr>   
</tbody>                  
</table>    
<footer>                
HTML5!  
</footer>  
<!--Comment-->
</html>

여기에서 "99 병"의 버전을 찾을 수 있습니다. 99-bottles-of-beer.net/language-whitespace-154.html
Davio

5

PHP, HQ9 +, Brainfuck 및 Bash (23 포인트, 제 생각에는)

PHP처럼 보이지만 ...

STDERR 리디렉션 및 따옴표 남용

what the >&_@ is a "<?php
//Boring, really ( ;[ ). This just prints Hello World!"
echo "Hello, World!"; //]&> are random characters that I like putting in"
?>" program?

이것은 나열된 모든 언어로 실행되고 작동하지만 PHP 코드처럼 보입니다.

Bash에서는 "Hello, World!"만 인쇄합니다. (중간에 정크 파일 만들기).

HQ9 +에서는 Hello World를 몇 번 인쇄합니다 ( H또는 모든 발생에 대해 한 번 h).

Brainfuck에서는 "고양이 프로그램"입니다. 표준 입력에서 읽고 입력을 표준 출력 ( ><,[.,]>>)으로 출력 합니다.

PHP에서는 다음과 같은 텍스트를 인쇄합니다.

> & _ @은 "Hello, World!"입니다. 프로그램?

배쉬 설명

>&_@는 저주를 대체하는 무해한 텍스트로 위장하지만 실제로 STDERR을 파일로 리디렉션 _@하므로 Bash는 what유효한 프로그램 이 아니라고 불평하지 않습니다 . 또한 is a <?php비트와 첫 번째 주석을 먹습니다 .

첫 번째 주석에는 끝에 따옴표가 있습니다 (따옴표는 <?php실행 되지 않도록하기 위해 있습니다). echo "Hello, World!";두 언어 모두에서 정상적으로 실행됩니다. 다음 주석은 다른 인용문을 숨기고 STDERR에서 파일로의 출력 경로 재 지정을 통해 are"// : 디렉토리입니다"라는 메시지를 표시합니다.

닫기 ?>는 따옴표로 묶여 있기 때문에 실행되지 않으며 두 번째 주석 및 그 이후의 비트와 함께 먹습니다.


4

자바 스크립트, 3p

<!--
$res = Array();
$ks  = Array("", "", "");

function convert($x) { return $x["toString"](36); }
for ($i=0; $i < 1000000; $i++) {
  this[convert($i)] = $i;

  if ($i == 626 || $i == 777 || $i == 865 || $i == 1176 || $i == 35761)
    $res[$res.length] = convert($i);

  if ($i == 381  || $i == 19145) $ks[0] += convert($i);
  if ($i == 19   || $i == 31775) $ks[1] += convert($i);
  if ($i == 1033 || $i == 27893) $ks[2] += convert($i);
}
this[$ks[0]]($res[$ks[1]]("")[$ks[2]](1)[$ks[1]](" "));
-->

yay

<h1>hi</h1>   /// heading
<p>lol</p>    /// content

잘못 구성된 웹 서버의 출력을 가장하여 PHP + HTML 엉망 처럼 보이게 합니다.

이것은 작게 시작했지만 (JS로 평가 할 때) 그것이 무엇인지 덜 명확하게하려고 노력하면서 커졌습니다 ... 죄송합니다. 죄송합니다. 죄송합니다. 어쨌든, 포함시키려는 주요한 것은 HTML의 포함 부분에 대한 내 트릭이었습니다. 유효한 JavaScript 코드이기도합니다. 코드 끝에 표시됩니다.

편집 : 아, 웹 사이트 컨텍스트에서 실행될 때 코드가 "hello world"라고 경고합니다 .


아하 나는 달러 기호를 좋아한다. 자바 스크립트 HTML도 정말 멋집니다.
케빈 콕스

그는 자바 스크립트 HTML을 사용하는 비결은 <와>가 비교이고 /.../는 정규식 리터럴 (따라서 주석의 트리플 슬래시)이며 JS는 유형에 대해 1 비트를 신경 쓰지 않는다는 것입니다.
FireFly

2

Python / PHP / Lua / Perl / Perl 6 / Ruby / JavaScript / HQ9 + (37 포인트)

print("Hello, World!")

파이썬에서 "Hello, World"처럼 보이지만 실제로는 PHP로 작성된 퀴네입니다. 보너스 포인트는 JavaScript (SpiderMonkey), Lua, HQ9 +, Perl, Perl 6 및 Ruby에서도 작동합니다.


2

JavaScript / Python 3 / PHP / Lua / Brainfuck / bash

이것은 ... 음 ... 난독 화 된 PHP?

#!,[.,]
echo = --[[0] ] [0][0] //1#>/dev/null;echo Hello, World!;exit # ]]0
--[[0] ] [0][0] //1#<?php for ($i = 99; $i > 1;) { printf("%d bottles of beer on the wall, %d bottles of beer.\nTake one down and pass it around. %d bottle%s of beer on the wall.\n\n", $i, $i, --$i, ($i != 1 ? "s" : "")); } print("1 bottle of beer on the wall, 1 bottle of beer.\nTake on e down and pass it around. No more bottles of beer on the wall.\n\nNo more bottles of beer on the wall, no more bottles of beer.\nGo to the store and buy some more. 99 bottles of beer on the wall.\n"); die(); ?>
2//2; print("Hello world!"); exit();"""
console.log("Hello, World!");/*]]
f = io.open(arg[0])
print(f:read("*a"))
--[[*///]]--"""
  • bash, JavaScript 또는 Python에서 실행하면 "Hello, World!"가 인쇄됩니다.
  • Lua에서 실행하면 스크립트의 소스 코드가 인쇄됩니다 (에 대한 첫 번째 인수로 제공된 경우 lua).
  • PHP로 실행하면 맥주 99 병의 가사가 인쇄됩니다.
  • Brainfuck로 실행하면 다음과 같이 작동 cat합니다.

점수 : 27

  • 규칙을 따릅니다. 3
  • 다른 언어를 실행할 수 있습니다 : 1
  • 유용한 것 : 3 (고양이 프로그램)
  • JS / Python 3 / Lua / bash에서도 작동합니다 : 20

규칙을 너무 많이 구부리지 않기를 바랍니다. :)


0

C ++로 작성된 Java

#include <stdio.h>

typedef char* String;

class P{
public:
    static void println(String s){
        puts(s);
    }
};

class S{
public:
    P out;
};


int main()
{
    S System;
    System.out.println("Hello world!");
    return 0;
}

3 점을 얻습니다.


0
print`open(__file__).read()`, 1000 // len('''
/* Calculate code conciseness score for some random JavaScript */

function print() {
    console.log('Hello, world!');
}

<!--''') # ASCII submarine

이것은 Python 2처럼 보이고 Python 2로 실행되어 Python 문자열 리터럴 형식으로 자체 소스를 인쇄하고 코드 간결성 점수를 표시합니다! 그러나 ES6로 실행하면 "Hello, world!"가 인쇄됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.