Écrire un programme déguisé [fermé]

14

Le défi est de créer un programme qui résout l'un des problèmes HQ9 + tout en ressemblant à une autre langue.

Remarque : Ce n'est pas un défi de golf.

Règles:

  • Le programme doit effectuer l'une des tâches suivantes lors de son exécution.
    • Imprimer "Bonjour tout le monde!"
    • Imprimez l'intégralité de sa source.
    • Imprimez les paroles de "99 bouteilles de bière sur le mur" (comme on le voit ici ).
  • À première vue, le programme devrait ressembler à une autre langue.

Classement

  • Programme de travail conforme aux règles. +3
  • Points bonus si "l'autre langue" peut être exécutée (syntaxe valide). +1
  • Encore plus de points si «l'autre langue» peut faire quelque chose d'utile. +3
  • Beaucoup de points bonus pour le programme valides (et utiles) dans encore plus de langues. +5 pour chaque langue sur 2.
Kevin Cox
la source
1
Comment sont-ils classés? Vous avez besoin d'un critère objectif. Vérifiez ici: codegolf.stackexchange.com/help/on-topic
MrZander
D'accord, j'ajoute un système de points.
Kevin Cox
1
Alors ... vous cherchez un polyglotte ?
Iszi
Oui. Mais en mettant l'accent sur la «dissimulation» des caractéristiques de toutes les langues sauf une dans une certaine mesure.
Kevin Cox
4
print ("Hello, World");se déroulera en lui-même dans de nombreuses langues
marinus

Réponses:

20

T-SQL

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

Ressemble à l' anglais .

Danko Durbić
la source
18

Ruby + C + Espace blanc.

Ce programme est C mais ressemble (et fonctionne comme) Ruby. J'ai également réussi à y ajouter des espaces.

C imprime sa propre source (pas tout à fait une quine malheureusement). Ruby imprime 99 bouteilles de bière et un espace blanc dit bonjour.

#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

Et comme SO n'est pas très gentil avec ws, voici un lien .

Kevin Cox
la source
15

Golfscript / HQ9 +

9

Une quine Golfscript qui se double d'un programme HQ9 + qui imprime les paroles de 99 bouteilles de bière.

Je sais que ce n'est pas un défi de golf, mais je n'ai pas pu résister au désir de répondre à cela avec un seul personnage.

Silvio Mayolo
la source
1
Et j'étais assez stupide pour supposer que HQ9 + ne pouvait pas ressembler à une autre langue: D
Kevin Cox
5
Oui! Et follement, il semble mentir le chiffre "9".
Pierre Arlaud
7

Perl, 7 points

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

Il s'agit d'un programme Perl qui imprime Hello, World!.

Répartition des scores:

  • Suit toutes les règles: +3
  • La syntaxe est-elle valide dans une autre langue: +1
  • Fait quelque chose d'intéressant dans l'autre langue: +3

Sidenote:

Une fois que vous savez ce qu'il fait, cela peut sembler «évident» où il se trouve, mais c'est dupe.

Le suivant:

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

affichera:

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

JavaScript, 7 points

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

Lorsqu'il est exécuté en JavaScript, il produit "Hello, World!"

Lorsqu'il est affiché au format HTML, il ressemble à ceci:

capture d'écran

Notation

  • Programme de travail conforme aux règles +3
  • L'autre syntaxe de langue est valide +1
  • Une autre langue fait quelque chose d'utile (vous pouvez y mettre n'importe quel code HTML) +3
Poignée de porte
la source
Subtil! Cela suppose cependant que l'implémentation qui l'évalue imprime la valeur d'achèvement de la dernière instruction à stdout.
FireFly
@FireFly oui, c'est ce evalque font toutes les consoles.
Poignée de porte
evalne l'imprime pas sur stdout; il le renvoie comme résultat de l'expression d'appel de fonction. Mais ouais, je suis juste en train de taquiner; Pardon. : p
FireFly
6

C ++ / Python

#include <iostream>

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

print("Hello, World!")

S'exécutera en Python (à la fois 2.x et 3.x) et se compilera en C ++ pour imprimer (avec retour chariot):

Bonjour le monde!

Nouilles9
la source
5

Ce qui suit imprime "Bonjour, monde" (et un tableau aléatoire) en HTML et "Bonjour, monde!" dans l' espace blanc .

<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
la source
Vous pouvez trouver une version de "99 bouteilles" ici 99-bottles-of-beer.net/language-whitespace-154.html
Davio
5

PHP, HQ9 +, Brainfuck et Bash (23 points, je pense)

Ressemble à PHP, mais ...

Abus de redirection STDERR et de citations.

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

Cela fonctionne et fait des choses dans tous les langages répertoriés, mais ressemble à du code PHP (un peu bizarre).

Dans Bash, il affiche simplement "Hello, World!" (création de fichiers inutiles en cours de route).

Dans HQ9 +, il imprime Hello World plusieurs fois (une fois pour chaque occurrence de Hou h).

Dans Brainfuck, c'est un "programme cat" - il lit à partir de l'entrée standard et sort son entrée vers la sortie standard ( ><,[.,]>>).

En PHP, il imprime du texte:

ce que le> & _ @ est un "Bonjour, monde!" programme?

Explication de Bash

>&_@est déguisé en texte inoffensif remplaçant une malédiction, mais il s'agit en fait d'une redirection de STDERR vers le fichier _@, de sorte que Bash ne se plaint pas qu'il whatne s'agit pas d'un programme valide. Il mange aussi leis a <?php bit et le premier commentaire.

Le premier commentaire a une citation à la fin (les citations sont là pour empêcher <?phpd'être exécutées). echo "Hello, World!";fonctionne normalement dans les deux langues. Le commentaire suivant sert à masquer une autre citation, et il y a une redirection de sortie de STDERR vers le fichierare , pour manger le message "//: Est un répertoire".

Étant donné que la fermeture ?>est entre guillemets, elle n'est pas exécutée et est consommée avec le deuxième commentaire et le bit après.


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

Masque la sortie d'un serveur Web mal configuré, comme (quelque chose qui à première vue ressemble) à PHP + HTML mess.

Cela a commencé petit mais est devenu plus grand alors que j'essayais de rendre moins évident ce qu'il faisait (lorsqu'il était évalué en tant que JS) ... cela aurait pu devenir plus obscur que la tâche prévue, désolé pour cela. Quoi qu'il en soit, la principale chose que je voulais inclure était mon astuce pour incorporer (un sous-ensemble de) HTML de telle sorte que ce soit aussi du code JavaScript valide, ce que vous voyez à la fin du code.

Edit: oh, je devrais mentionner, lorsqu'il est exécuté dans un contexte de site Web, le code alerte "bonjour le monde" .

Luciole
la source
Aha j'adore les vars de signe dollar. Le html javascript est aussi vraiment cool.
Kevin Cox
Hehe, l'astuce avec le HTML javascript est que <et> sont des comparaisons, /.../ est un littéral regex (d'où les triples barres obliques pour les commentaires ..) et JS ne se soucie pas du tout des types.
FireFly
2

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

print("Hello, World!")

Cela ressemble à "Hello, World" en Python, mais c'est en fait un quine écrit en PHP. Il fonctionne également en JavaScript (SpiderMonkey), Lua, HQ9 +, Perl, Perl 6 et Ruby, pour les points bonus.

Konrad Borowski
la source
2

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

Cela ressemble à ... Umm ... PHP obscurci?

#!,[.,]
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"))
--[[*///]]--"""
  • Si vous l'exécutez en bash, JavaScript ou Python, il affichera "Bonjour tout le monde!"
  • Si vous l'exécutez dans Lua, il affichera le code source du script (s'il est fourni comme premier argument à lua ).
  • Si vous l'exécutez en PHP, il imprimera les paroles de 99 bouteilles de bière
  • Si vous l'exécutez en tant que Brainfuck, cela fonctionnera comme cat.

Résultat: 27

  • Suit les règles: 3
  • Une autre langue peut s'exécuter: 1
  • Fait quelque chose d'utile: 3 (programme cat)
  • Fonctionne également en JS / Python 3 / Lua / bash: 20

J'espère que je ne plie pas trop les règles :)

Nikolaj
la source
0

Java écrit en 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;
}

Marquez 3 points.

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

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

<!--''') # ASCII submarine

Cela ressemble à Python 2, et s'exécute en tant que Python 2, imprimant sa propre source sous forme littérale de chaîne Python, ainsi qu'un score de concision de code d'une certaine sorte! Lorsqu'il est exécuté en tant qu'ES6, cependant, il affiche «Bonjour tout le monde!».

Ry-
la source