Viết một chương trình cải trang [đóng]


14

Thách thức là tạo ra một chương trình giải quyết bất kỳ một trong những vấn đề của HQ9 + trong khi trông giống như một ngôn ngữ khác.

Lưu ý : Đây không phải là một thử thách golf.

Quy tắc:

  • Chương trình phải thực hiện một trong các nhiệm vụ sau khi chạy.
    • In "Xin chào, Thế giới!"
    • In toàn bộ nguồn của nó.
    • In lời bài hát đến "99 Chai bia trên tường" (như được thấy ở đây ).
  • Thoạt nhìn chương trình sẽ trông giống như một ngôn ngữ khác.

Phân loại

  • Chương trình làm việc thỏa mãn các quy tắc. +3
  • Điểm thưởng nếu "ngôn ngữ khác" có thể được chạy (cú pháp hợp lệ). +1
  • Thậm chí nhiều điểm hơn nếu "ngôn ngữ khác" có thể làm điều gì đó hữu ích. +3
  • Rất nhiều điểm thưởng cho chương trình là hợp lệ (và hữu ích) bằng nhiều ngôn ngữ hơn. +5 cho mỗi ngôn ngữ trên 2.

1
Họ được xếp loại như thế nào? Bạn cần một tiêu chí khách quan. Kiểm tra tại đây: codegolf.stackexchange.com/help/on-topic
MrZander

Được rồi, tôi đang thêm một hệ thống điểm.
Kevin Cox

1
Vì vậy, ... bạn đang tìm kiếm một polyglot ?
Iszi

Đúng. Nhưng với sự nhấn mạnh vào việc "che giấu" các tính năng của tất cả trừ một ngôn ngữ ở một mức độ nào đó.
Kevin Cox

4
print ("Hello, World");bởi chính nó sẽ chạy trong rất nhiều ngôn ngữ
marinus

Câu trả lời:



18

Ruby + C + khoảng trắng.

Chương trình này là C nhưng trông giống như (và chạy như) Ruby. Tôi cũng đã xoay sở để ném một số khoảng trắng vào đó.

C in nguồn riêng của nó (không may là một quine không may). Ruby in 99 chai bia và khoảng trắng nói xin chào.

#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

Và vì SO không đẹp lắm nên ws ở đây là một liên kết .


15

Golf / HQ9 +

9

Một câu đố Golfscript nhân đôi như một chương trình HQ9 + in lời bài hát đến 99 chai bia.

Tôi biết đây không phải là một thử thách golf, nhưng tôi không thể cưỡng lại mong muốn trả lời điều này với một nhân vật.


1
Và tôi đã đủ ngớ ngẩn khi cho rằng HQ9 + không thể trông giống một ngôn ngữ khác: D
Kevin Cox

5
Đúng! Và thật điên rồ, nó có vẻ là số "9".
Pierre Arlaud

7

Perl, 7 điểm

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);

Đây là một chương trình Perl in Hello, World!.

Phân tích điểm:

  • Theo tất cả các quy tắc: +3
  • Là cú pháp hợp lệ trong ngôn ngữ khác: +1
  • Có điều gì thú vị trong ngôn ngữ khác: +3

Sidenote:

Một khi bạn biết những gì nó có vẻ như 'rõ ràng' nơi nó đi chơi, nhưng đây là một bản sao.

Sau đây là

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

sẽ xuất ra:

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

7

JavaScript, 7 điểm

<!--
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

Khi chạy bằng JavaScript, tạo ra "Xin chào, Thế giới!"

Khi được xem dưới dạng HTML, trông như thế này:

ảnh chụp màn hình

Chấm điểm

  • Chương trình làm việc thỏa mãn quy tắc +3
  • Cú pháp ngôn ngữ khác là hợp lệ +1
  • Ngôn ngữ khác thực hiện điều gì đó hữu ích (bạn có thể đặt bất kỳ HTML nào bạn muốn vào đó) +3

Tế nhị! Điều này giả định rằng việc triển khai đánh giá nó sẽ in ra giá trị hoàn thành của câu lệnh cuối cùng cho thiết bị xuất chuẩn.
FireFly

@FireFly vâng, đó là những gì evalvà tất cả các bảng điều khiển làm.
Doorknob

evalkhông in nó ra thiết bị xuất chuẩn; nó trả về nó như là kết quả của biểu thức gọi hàm. Nhưng vâng, tôi chỉ là nitpicking; lấy làm tiếc. : p
FireFly

6

C ++ / Python

#include <iostream>

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

print("Hello, World!")

Sẽ chạy bằng Python (cả 2.x và 3.x) và biên dịch trong C ++ để in (có trả lại vận chuyển):

Chào thế giới!


5

Phần sau đây in "Xin chào, Thế giới" (và một bảng ngẫu nhiên) bằng HTML và "Xin chào, Thế giới!" trong khoảng trắng .

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

Bạn có thể tìm thấy phiên bản "99 Chai" tại đây 99-bottles-of-beer.net/lingu-whitespace-154.html
Davio

5

PHP, HQ9 +, Brainfuck và Bash (23 điểm, tôi nghĩ vậy)

Trông giống như PHP, nhưng ...

Lạm dụng chuyển hướng và trích dẫn 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?

Điều này chạy và thực hiện mọi thứ trong tất cả các ngôn ngữ được liệt kê, nhưng trông giống như mã PHP (hơi lạ).

Trong Bash, nó chỉ in "Xin chào, Thế giới!" (tạo tập tin rác trên đường đi).

Trong HQ9 +, nó in Hello World một vài lần (một lần cho mỗi lần xuất hiện Hhoặc h).

Trong Brainfuck, đó là một "chương trình mèo" - nó đọc từ đầu vào tiêu chuẩn và xuất đầu vào của nó sang đầu ra tiêu chuẩn ( ><,[.,]>>).

Trong PHP, nó in một số văn bản:

những gì> & _ @ là "Xin chào, thế giới!" chương trình?

Giải thích Bash

>&_@được ngụy trang thành văn bản vô hại thay thế một lời nguyền, nhưng thực tế nó là một sự chuyển hướng của STDERR sang tệp _@, do đó Bash không phàn nàn rằng đó whatkhông phải là một chương trình hợp lệ. Nó cũng ăn is a <?phpbit và bình luận đầu tiên.

Nhận xét đầu tiên có một trích dẫn ở cuối (các trích dẫn ở đó để ngăn <?phpkhông cho chạy). echo "Hello, World!";chạy bình thường trong cả hai ngôn ngữ. Nhận xét tiếp theo dùng để ẩn một trích dẫn khác và có một chuyển hướng đầu ra từ STDERR sang tệpare , để ăn thông báo "//: Is a library".

Vì phần kết thúc ?>được trích dẫn, nó không được chạy và được ăn cùng với bình luận thứ hai và một chút sau nó.


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

Đánh bại đầu ra của một máy chủ web được định cấu hình sai, vì (một cái gì đó thoạt nhìn trông giống như) PHP + HTML mớ hỗn độn .

Điều này bắt đầu nhỏ nhưng ngày càng lớn hơn khi tôi cố gắng làm cho nó ít rõ ràng hơn (khi được đánh giá là JS) ... nó có thể trở nên khó hiểu hơn nhiệm vụ dự định, xin lỗi về điều đó. Dù sao, điều chính tôi muốn đưa vào là mẹo để nhúng (một tập hợp con) HTML sao cho nó cũng là mã JavaScript hợp lệ, đó là những gì bạn thấy ở cuối mã.

Chỉnh sửa: oh, tôi nên đề cập, khi chạy trong ngữ cảnh trang web, mã thông báo "hello world" .


Aha tôi yêu các vars đô la ký. Các htmlascript cũng thực sự mát mẻ.
Kevin Cox

Hehe, mẹo với HTML javascript là <và> là so sánh, /.../ là một biểu thức chính quy (do đó, ba dấu gạch chéo cho các nhận xét ..) và JS không quan tâm một chút về các loại.
FireFly

2

Python / PHP / Lua / Perl / Perl 6 / Ruby / JavaScript / HQ9 + (37 điểm)

print("Hello, World!")

Cái này trông giống như "Xin chào, Thế giới" trong Python, nhưng thực ra nó là một câu chuyện được viết bằng PHP. Nó cũng hoạt động trong JavaScript (SpiderMonkey), Lua, HQ9 +, Perl, Perl 6 và Ruby, cho điểm thưởng.


2

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

Điều này trông giống như ... Umm ... PHP bị xáo trộn?

#!,[.,]
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"))
--[[*///]]--"""
  • Nếu bạn chạy nó trong bash, JavaScript hoặc Python, nó sẽ in "Xin chào, Thế giới!"
  • Nếu bạn chạy nó trong Lua, nó sẽ in mã nguồn của tập lệnh (nếu được cung cấp làm đối số đầu tiên lua).
  • Nếu bạn chạy nó trong PHP, nó sẽ in lời của 99 chai bia
  • Nếu bạn chạy nó như Brainfuck, nó sẽ hoạt động như thế cat.

Điểm: 27

  • Theo các quy tắc: 3
  • Ngôn ngữ khác có thể chạy: 1
  • Có điều gì hữu ích: 3 (chương trình mèo)
  • Cũng hoạt động trong JS / Python 3 / Lua / bash: 20

Tôi hy vọng tôi không bẻ cong quy tắc quá nhiều :)


0

Java được viết bằng 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;
}

Điểm 3 điểm.


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

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

<!--''') # ASCII submarine

Cái này trông giống như Python 2, và chạy như Python 2, in nguồn riêng của nó ở dạng chuỗi ký tự Python, cũng như một số điểm cụ thể của mã! Tuy nhiên, khi chạy như ES6, nó in ra Hello Hello, world!

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.