Schreibe ein Programm in Verkleidung

14

Die Herausforderung besteht darin, ein Programm zu erstellen, das eines der HQ9 + -Probleme löst und dabei wie eine andere Sprache aussieht.

Hinweis : Dies ist keine Golfherausforderung.

Regeln:

  • Das Programm muss beim Ausführen eine der folgenden Aufgaben ausführen.
    • "Hallo, Welt!"
    • Die gesamte Quelle drucken.
    • Drucken Sie die Texte zu "99 Flaschen Bier an der Wand" (wie hier zu sehen ).
  • Auf den ersten Blick sollte das Programm wie eine andere Sprache aussehen.

Bewertung

  • Arbeitsprogramm, das den Regeln entspricht. +3
  • Bonuspunkte, wenn die "andere Sprache" ausgeführt werden kann (Syntax gültig). +1
  • Noch mehr Punkte, wenn die "andere Sprache" etwas Nützliches kann. +3
  • Viele Bonuspunkte für das Programm, das in noch mehr Sprachen gültig (und nützlich) ist. +5 für jede Sprache über 2.
Kevin Cox
quelle
1
Wie werden sie bewertet? Sie benötigen ein objektives Kriterium. Überprüfen Sie hier: codegolf.stackexchange.com/help/on-topic
MrZander
Okay, ich füge ein Punktesystem hinzu.
Kevin Cox
1
Also ... Sie suchen nach einer Polyglotte ?
Iszi
Ja. Aber mit dem Schwerpunkt darauf, die Merkmale aller Sprachen bis auf eine zu einem gewissen Grad zu "verbergen".
Kevin Cox
4
print ("Hello, World");allein wird in vielen Sprachen laufen
marinus

Antworten:

20

T-SQL

Print 'Hello, World!' -- she said.

Sieht aus wie Englisch .

Danko Durbić
quelle
18

Ruby + C + Whitespace.

Dieses Programm ist C, sieht aber wie Ruby aus (und wird als Ruby ausgeführt). Ich habe es auch geschafft, etwas Leerzeichen hineinzuwerfen.

C gibt eine eigene Quelle aus (leider keine Quine). Ruby druckt 99 Flaschen Bier und sagt Hallo.

#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

Und da SO nicht sehr nett zu ws ist hier ein Link .

Kevin Cox
quelle
15

Golfscript / HQ9 +

9

Eine Golfscript-Quine, die gleichzeitig als HQ9 + -Programm fungiert und die Texte auf 99 Flaschen Bier druckt.

Ich weiß, dass dies keine Golf-Herausforderung ist, aber ich konnte dem Wunsch, dies mit einem Charakter zu beantworten, nicht widerstehen.

Silvio Mayolo
quelle
1
Und ich war albern genug anzunehmen, dass HQ9 + nicht wie eine andere Sprache aussehen könnte: D
Kevin Cox
5
Ja! Und verrückt sieht es aus, als lüge die Zahl "9".
Pierre Arlaud
7

Perl, 7 Punkte

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

Dies ist ein Perl-Programm, das druckt Hello, World!.

Aufschlüsselung der Punkte:

  • Befolgt alle Regeln: +3
  • Ist gültige Syntax in einer anderen Sprache: +1
  • Hat etwas Interessantes in der anderen Sprache: +3

Randnotiz:

Sobald Sie wissen, was es tut, scheint es vielleicht "offensichtlich", wo es rumhängt, aber das ist ein Betrug.

Folgende:

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

wird ausgeben:

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

JavaScript, 7 Punkte

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

Wenn es in JavaScript ausgeführt wird, wird "Hello, World!"

Wenn es als HTML angezeigt wird, sieht es so aus:

Bildschirmfoto

Wertung

  • Arbeitsprogramm, das die Regeln +3 erfüllt
  • Eine andere Sprachsyntax ist gültig +1
  • Eine andere Sprache macht etwas Nützliches (Sie können dort jedes gewünschte HTML einfügen) +3
Türknauf
quelle
Subtil! Dies setzt jedoch voraus, dass die Implementierung, die es auswertet, den Vervollständigungswert der letzten Anweisung an stdout ausgibt.
FireFly
@FireFly ja, das ist was evalund alle Konsolen tun.
Türknauf
evaldruckt es nicht nach Standard aus; es gibt es als Ergebnis des Funktionsaufrufausdrucks zurück. Aber ja, ich picke nur rum; Es tut uns leid. : p
FireFly
6

C ++ / Python

#include <iostream>

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

print("Hello, World!")

Läuft in Python (2.x und 3.x) und kompiliert in C ++ zum Drucken (mit Wagenrücklauf):

Hallo Welt!

Noodle9
quelle
5

Die folgenden Drucke "Hallo, Welt" (und eine zufällige Tabelle) in HTML und "Hallo, Welt!" in Whitespace .

<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>
Davio
quelle
Eine Version von "99 Bottles" finden Sie hier 99-bottles-of-beer.net/language-whitespace-154.html
Davio
5

PHP, HQ9 +, Brainfuck und Bash (23 Punkte, denke ich)

Sieht aus wie PHP, aber ...

Missbrauch von STDERR-Weiterleitungen und -Anführungszeichen.

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

Dies läuft und erledigt Dinge in allen aufgelisteten Sprachen, sieht aber aus wie (etwas seltsamer) PHP-Code.

In Bash wird lediglich "Hello, World!" (Erstellen von Junk-Dateien auf dem Weg).

In HQ9 + wird Hello World einige Male gedruckt (einmal bei jedem Auftreten von Hoder h).

In Brainfuck ist es ein "Katzenprogramm" - es liest von der Standardeingabe und gibt seine Eingabe an die Standardausgabe aus ( ><,[.,]>>).

In PHP wird folgender Text ausgegeben:

Was ist das> & _ @ ein "Hallo, Welt!" Programm?

Bash Erklärung

>&_@wird als harmloser Text getarnt, der einen Fluch ersetzt, es ist jedoch eine Umleitung von STDERR in die Datei _@, sodass Bash sich nicht beschwert, dass whates sich nicht um ein gültiges Programm handelt. Es frisst auch das is a <?phpBit und den ersten Kommentar.

Am Ende des ersten Kommentars steht ein Anführungszeichen (die Anführungszeichen sollen verhindern, dass <?phpsie ausgeführt werden). echo "Hello, World!";läuft normalerweise in beiden Sprachen. Der nächste Kommentar dient dazu, ein anderes Zitat auszublenden, und es erfolgt eine Ausgabeumleitung von STDERR in die Datei are, um die Meldung "//: Ist ein Verzeichnis" zu lesen .

Da das Closing ?>in Anführungszeichen steht, wird es nicht ausgeführt und zusammen mit dem zweiten Kommentar und dem Bit danach verzehrt.


quelle
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

Maskiert die Ausgabe eines falsch konfigurierten Webservers als (auf den ersten Blick) PHP + HTML- Chaos.

Das fing klein an, wurde aber größer, als ich versuchte, weniger klar zu machen, was es tut (wenn es als JS bewertet wird) ... es könnte verschwommener geworden sein als die beabsichtigte Aufgabe. Das Wichtigste, was ich einschließen wollte, war mein Trick zum Einbetten (einer Teilmenge von) HTML, sodass es auch gültigen JavaScript-Code gibt, den Sie am Ende des Codes sehen.

Edit: oh, ich sollte erwähnen, wenn in einem Website-Kontext der Code "Hallo Welt" warnt .

FireFly
quelle
Aha, ich liebe die Dollarzeichen. Das Javascript HTML ist auch wirklich cool.
Kevin Cox
Hehe, der Trick mit dem Javascript-HTML ist, dass <und> Vergleiche sind, /.../ ein Regex-Literal ist (daher die dreifachen Schrägstriche für Kommentare ..) und JS kümmert sich kein bisschen um die Typen.
FireFly
2

Python / PHP / Lua / Perl / Perl 6 / Ruby / JavaScript / HQ9 + (37 Punkte)

print("Hello, World!")

Dies sieht aus wie "Hallo Welt" in Python, ist aber eigentlich eine Quine, die in PHP geschrieben wurde. Es funktioniert auch in JavaScript (SpiderMonkey), Lua, HQ9 +, Perl, Perl 6 und Ruby für Bonuspunkte.

Konrad Borowski
quelle
2

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

Das sieht aus wie ... Ähm ... Verschleiertes 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"))
--[[*///]]--"""
  • Wenn Sie es in Bash, JavaScript oder Python ausführen, wird "Hello, World!"
  • Wenn Sie es in Lua ausführen, wird der Quellcode des Skripts gedruckt (sofern als erstes Argument angegeben lua).
  • Wenn Sie es in PHP ausführen, werden die Texte von 99 Flaschen Bier gedruckt
  • Wenn Sie es als Brainfuck ausführen, funktioniert es wie folgt cat.

Prüfungsergebnis: 27

  • Befolgen Sie die Regeln: 3
  • Andere Sprache kann ausgeführt werden: 1
  • Hat etwas Nützliches: 3 (Katzenprogramm)
  • Funktioniert auch in JS / Python 3 / Lua / bash: 20

Ich hoffe, dass ich die Regeln nicht zu sehr verbiege :)

Nikolaj
quelle
0

Java in C ++ geschrieben

#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;
}

Erziele 3 Punkte.

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

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

<!--''') # ASCII submarine

Dies sieht aus wie Python 2 und wird als Python 2 ausgeführt, wobei eine eigene Quelle in Python-String-Literal-Form sowie eine Art Code-Prägnanz-Score gedruckt wird! Bei der Ausführung als ES6 wird jedoch "Hallo Welt!"

Ry-
quelle