เขียนโปรแกรมในการปลอมตัว [ปิด]


14

ความท้าทายคือการสร้างโปรแกรมที่แก้ปัญหาHQ9 + ใด ๆในขณะที่ดูเหมือนภาษาอื่น

หมายเหตุ : นี่ไม่ใช่การแข่งขันกอล์ฟ

กฎ:

  • โปรแกรมต้องทำงานอย่างใดอย่างหนึ่งต่อไปนี้เมื่อเรียกใช้
    • พิมพ์ "Hello, World!"
    • พิมพ์แหล่งที่มาทั้งหมด
    • พิมพ์เนื้อเพลงไปที่ "99 ขวดเบียร์บนกำแพง" (เท่าที่เห็นที่นี่ )
  • ได้อย่างรวดเร็วก่อนโปรแกรมควรมีลักษณะเหมือนภาษาอื่น

การวัดผลการศึกษา

  • โปรแกรมทำงานที่สอดคล้องกับกฎ 3
  • คะแนนโบนัสหาก "ภาษาอื่น ๆ " สามารถเรียกใช้ (ไวยากรณ์ที่ถูกต้อง) +1
  • คะแนนมากยิ่งขึ้นถ้า "ภาษาอื่น ๆ " สามารถทำสิ่งที่มีประโยชน์ 3
  • คะแนนโบนัสมากมายสำหรับโปรแกรมที่ถูกต้อง (และมีประโยชน์) ในภาษาอื่น ๆ อีกมากมาย +5สำหรับแต่ละภาษาที่มากกว่า 2

1
พวกเขาจะให้คะแนนอย่างไร คุณต้องมีเกณฑ์วัตถุประสงค์ ตรวจสอบที่นี่: codegolf.stackexchange.com/help/on-topic
MrZander

โอเคฉันกำลังเพิ่มระบบคะแนน
Kevin Cox

1
ดังนั้น ... คุณกำลังมองหาคนพูดได้หลายภาษา ?
Iszi

ใช่. แต่ด้วยการเน้น "ซ่อน" คุณลักษณะของภาษาทั้งหมดยกเว้นภาษาเดียว
Kevin Cox

4
print ("Hello, World");โดยตัวมันเองจะทำงานในหลายภาษา
marinus

คำตอบ:



18

Ruby + C + ช่องว่าง

โปรแกรมนี้เป็น C แต่ดูเหมือนว่า (และทำงานเป็น) ทับทิม ฉันยังจัดการที่จะโยนช่องว่างในนั้น

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

และตั้งแต่นั้นไม่ได้เป็นอย่างดีที่จะ WS นี่คือการเชื่อมโยง


15

Golfscript / HQ9 +

9

Golfscript quine ที่เพิ่มเป็นสองเท่าของโปรแกรม HQ9 + ที่พิมพ์เนื้อเพลงลงในขวดเบียร์ 99 ขวด

ฉันรู้ว่านี่ไม่ใช่การท้าทายกอล์ฟ แต่ฉันไม่สามารถต้านทานความปรารถนาที่จะตอบคำถามนี้ด้วยตัวละคร


1
และฉันโง่พอที่จะคิดว่า HQ9 + ไม่สามารถดูเหมือนภาษาอื่น: D
Kevin Cox

5
ใช่ และดูบ้าคลั่งอยู่จำนวน "9"
Pierre Arlaud

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

sidenote:

เมื่อคุณรู้ว่ามันทำอะไรมันอาจดูเหมือน 'ชัดเจน' ซึ่งมันห้อยอยู่ข้างนอก แต่นี่คือล่อ

ดังต่อไปนี้:

$_="`\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

@FireFly ใช่นั่นคือสิ่งที่evalและคอนโซลทั้งหมดทำ
Doorknob

evalไม่พิมพ์ไปที่ stdout; มันจะส่งคืนมันเป็นผลมาจากการแสดงออกการเรียกฟังก์ชั่น แต่ใช่ฉันแค่ 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 ++ เพื่อพิมพ์ (ด้วย carriage return):

สวัสดีชาวโลก!


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เพื่อกินข้อความ "//: Is a directory"

เนื่องจากการปิด?>อยู่ในเครื่องหมายอัญประกาศจึงไม่สามารถเรียกใช้และกินพร้อมกับความคิดเห็นที่สองและบิตหลังจากนั้น


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

หน้ากากเอาท์พุทของเว็บเซิร์ฟเวอร์ที่กำหนดค่าผิดพลาดเนื่องจาก (สิ่งที่มองอย่างรวดเร็วครั้งแรกดูเหมือน) ระเบียบPHP + HTML

สิ่งนี้เริ่มต้นเล็ก แต่ก็ใหญ่ขึ้นเมื่อฉันพยายามทำให้มันชัดเจนน้อยลงว่ามันทำอะไร (เมื่อประเมินว่าเป็น JS) ... มันอาจดูสับสนกว่างานที่ตั้งใจขออภัยเกี่ยวกับเรื่องนี้ อย่างไรก็ตามสิ่งสำคัญที่ฉันต้องการรวมคือเคล็ดลับในการฝัง HTML (ชุดย่อยของ) HTML เพื่อให้เป็นรหัส JavaScript ที่ถูกต้องซึ่งเป็นสิ่งที่คุณเห็นในตอนท้ายของรหัส

แก้ไข: โอ้ฉันควรจะพูดถึงเมื่อทำงานในบริบทเว็บไซต์แจ้งเตือนรหัส "สวัสดีโลกที่"


Aha ฉันรัก vars เครื่องหมายดอลลาร์ จาวาสคริปต์จาวาสคริปต์นั้นยอดเยี่ยมเช่นกัน
Kevin Cox

Hehe, เคล็ดลับกับ javascript HTML นั้นคือ <และ> กำลังเปรียบเทียบ, /.../ เป็นตัวอักษร regex (ดังนั้นเครื่องหมายสแลชสามคำสำหรับความคิดเห็น .. ) และ JS ไม่สนใจชนิดของบิตเลย
FireFly

2

Python / PHP / Lua / Perl / Perl 6 / Ruby / JavaScript / HQ9 + (37 คะแนน)

print("Hello, World!")

ดูเหมือนว่า "Hello, World" ใน Python แต่จริงๆแล้วมันเป็น quine ที่เขียนด้วย PHP นอกจากนี้ยังทำงานใน JavaScript (SpiderMonkey), Lua, HQ9 +, Perl, Perl 6 และ Ruby สำหรับคะแนนโบนัส


2

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

ดูเหมือน ... Umm ... Obfuscated 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

Java เขียนด้วย C ++

#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.