変装してプログラムを書く[終了]


14

課題は、別の言語のように見えながら、HQ9 +の問題のいずれかを解決するプログラムを作成することです。

:これはゴルフの挑戦ではありません。

ルール:

  • プログラムは、実行時に次のいずれかのタスクを実行する必要があります。
    • 「Hello、World!」を印刷します
    • ソース全体を印刷します。
    • (見られるように、「ウォール上のビールの99本のボトル」に歌詞を印刷し、ここ)。
  • 一見すると、プログラムは別の言語のように見えるはずです。

格付け

  • ルールを満たす作業プログラム。+3
  • 「他の言語」を実行できる場合は、ボーナスポイント(構文は有効)。+1
  • 「他の言語」が何か有用なことができるなら、さらに多くのポイント。+3
  • さらに多くの言語でプログラムが有効(かつ有用)であることのボーナスポイントがたくさんあります。2以上の言語ごとに+5

1
それらはどのように評価されますか?客観的な基準が必要です。ここをチェックしてください:codegolf.stackexchange.com/help/on-topic
MrZander

さて、私はポイントシステムを追加しています。
Kevin Cox

1
だから...あなたはポリグロットを探していますか?
Iszi

はい。しかし、ある程度までは1言語を除くすべての機能を「隠す」ことに重点を置いています。
Kevin Cox

4
print ("Hello, World");それ自体は多くの言語で実行されます
マリナス2013年

回答:



18

Ruby + C +ホワイトスペース。

このプログラムはCですが、Rubyのように見えます(そしてRubyとして実行されます)。私もそこにいくつかの空白を投げることができました。

Cは独自のソースを出力します(残念ながらかなりのクインではありません)。Rubyは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

Golfscript / HQ9 +

9

99ボトルのビールに歌詞を印刷するHQ9 +プログラムを兼ねるGolfscript quine。

これはゴルフのチャレンジではないことは知っていますが、1人のキャラクターで答えたいという欲求に抵抗できませんでした。


1
そして、私はHQ9 +が別の言語のように見えないことを想定するのに十分愚かでした:D
Kevin Cox

5
はい!そして、狂ったようにそれは数字「9」にあるように見えます。
Pierre Arlaud、2013年

7

Perl、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

JavaScript、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 2013年

@FireFlyはい、それがevalすべてのコンソールの機能です。
ドアノブ

evalstdoutに出力しません。関数呼び出し式の結果としてそれを返します。しかし、ええ、私はただつまらないです。ごめんなさい。:p
FireFly 2013年

6

C ++ / Python

#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コードのように見えます(少し奇妙です)。

バッシュでは、「Hello、World!」と表示されるだけです。(途中でジャンクファイルを作成する)。

HQ9 +では、Hello Worldを数回出力します(Hまたはが出現するたびに1回h)。

Brainfuckでは、これは「catプログラム」><,[.,]>>です。標準入力から読み取り、その入力を標準出力に出力します()。

PHPでは、テキストを出力します。

>&_ @は「Hello、World!」プログラム?

バッシュの説明

>&_@は、呪いの代わりに無害なテキストを装っていますが、実際には、STDERRがファイルにリダイレクトされる_@ためwhat、有効なプログラムではないとBashが警告しません。それはまたis a <?phpビットと最初のコメントを食べます。

最初のコメントの最後には引用符があります(引用符は<?php実行されないようにするためにあります)。echo "Hello, World!";両方の言語で正常に実行されます。次のコメントは別の引用を隠す役割を果たし、STDERRからファイルへの出力リダイレクトがありare、メッセージ「//:Is a directory」を食べます。

締めくくり?>は引用符で囲まれているため、実行されず、2番目のコメントとその直後のビットとともに食べられます。


4

JavaScript、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

誤って設定されたWebサーバーの出力を、一見するとPHP + HTMLの混乱のように見せかけます。

これは最初は小さなものでしたが、(JSとして評価した場合)何をするかを明確にしようとすると大きくなりました...申し訳ありませんが、意図したタスクよりも難読化されている可能性があります。とにかく、私が含めたかった主なことは、HTML(のサブセット)を埋め込むための私のトリックでした。これにより、コードの最後に表示されるJavaScriptコードも有効になります。

編集:ああ、私は言及する必要があります、ウェブサイトのコンテキストで実行すると、コードは「hello world」を警告します。


Ahaドル記号の変数が大好きです。javascript htmlもとてもクールです。
Kevin Cox

Hehe、JavaScript HTMLのトリックは、<と>は比較であり、/ ... /は正規表現リテラル(したがって、コメントにはトリプルスラッシュ..)であり、JSはタイプについて少し気にしません。
FireFly 2013年

2

Python / PHP / Lua / Perl / Perl 6 / Ruby / JavaScript / HQ9 +(37ポイント)

print("Hello, World!")

これはPythonでは「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(catプログラム)
  • 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.