Napisz program w przebraniu [zamknięty]


14

Wyzwanie polega na stworzeniu programu, który rozwiązuje jeden z problemów HQ9 +, a jednocześnie wygląda jak inny język.

Uwaga : To nie jest wyzwanie golfowe.

Zasady:

  • Po uruchomieniu program musi wykonać jedno z poniższych zadań.
    • Drukuj „Witaj, świecie!”
    • Wydrukuj całe swoje źródło.
    • Wydrukuj tekst piosenki do „99 butelek piwa na ścianie” (jak widać tutaj ).
  • Na pierwszy rzut oka program powinien wyglądać jak inny język.

Cieniowanie

  • Program roboczy, który spełnia zasady. +3
  • Punkty bonusowe, jeśli można uruchomić „inny język” (poprawna składnia). +1
  • Jeszcze więcej punktów, jeśli „inny język” może zrobić coś pożytecznego. +3
  • Wiele punktów bonusowych za program jest ważny (i przydatny) w jeszcze większej liczbie języków. +5 dla każdego języka powyżej 2.

1
Jak są one oceniane? Potrzebujesz obiektywnego kryterium. Sprawdź tutaj: codegolf.stackexchange.com/help/on-topic
MrZander

Okej, dodaję system punktów.
Kevin Cox,

1
Więc ... szukasz poliglota ?
Iszi

Tak. Ale z naciskiem na „ukrywanie” cech wszystkich języków oprócz jednego do pewnego stopnia.
Kevin Cox,

4
print ("Hello, World");sam w sobie będzie działał w wielu językach
marinus

Odpowiedzi:



18

Ruby + C + białe znaki.

Ten program to C, ale wygląda jak (i ​​działa jako) Ruby. Udało mi się też wrzucić trochę białych znaków.

C drukuje własne źródło (niestety nie całkiem quine). Ruby drukuje 99 butelek piwa i białe znaki witają.

#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

A ponieważ SO nie jest zbyt przyjemne, tutaj jest link .


15

Golfscript / HQ9 +

9

Quinta Golfscript, która działa również jako program HQ9 +, który drukuje teksty do 99 butelek piwa.

Wiem, że to nie jest wyzwanie dla golfa, ale nie mogłem się oprzeć chęci odpowiedzi na to pytanie jedną postacią.


1
I byłem na tyle głupi, by założyć, że HQ9 + nie może wyglądać na inny język: D
Kevin Cox

5
Tak! I szaleńczo wygląda na liczbę „9”.
Pierre Arlaud

7

Perl, 7 punktów

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

To jest program Perla, który drukuje Hello, World! .

Podział punktacji:

  • Przestrzega wszystkich zasad: +3
  • Czy jest poprawna składnia w innym języku: +1
  • Robi coś interesującego w drugim języku: +3

Dygresja:

Kiedy już wiesz, co robi, może wydawać się „oczywiste”, gdzie się spotyka, ale to jest dupek.

Następujące:

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

wyświetli:

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

7

JavaScript, 7 punktów

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

Po uruchomieniu w JavaScript tworzy „Witaj, świecie!”

W przypadku HTML wygląda następująco:

zrzut ekranu

Punktacja

  • Program roboczy, który spełnia zasady +3
  • Składnia innego języka jest poprawna +1
  • Inny język robi coś pożytecznego (możesz tam wstawić dowolny HTML) +3

Subtelny! Zakłada się jednak, że implementacja oceniająca to wypisuje wartość zakończenia ostatniej instrukcji na standardowe wyjście.
FireFly,

@FireFly tak, to właśnie robią evalwszystkie konsole.
Klamka

evalnie drukuje go na standardowe wyjście; zwraca go jako wynik wyrażenia wywołania funkcji. Ale tak, po prostu gnębiam; Przepraszam. : p
FireFly,

6

C ++ / Python

#include <iostream>

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

print("Hello, World!")

Uruchomi się w Pythonie (zarówno 2.x, jak i 3.x) i skompiluje w C ++, aby wydrukować (ze znakiem powrotu karetki):

Witaj świecie!


5

Poniższe wypisuje „Hello, World” (i losową tabelę) w HTML i „Hello, World!” w spacji .

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

Można znaleźć wersję „99 butelek” tu 99-bottles-of-beer.net/language-whitespace-154.html
DAVIO

5

PHP, HQ9 +, Brainfuck and Bash (chyba 23 punkty)

Wygląda jak PHP, ale ...

Nadużycie przekierowania STDERR i cytatów.

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

Działa i działa we wszystkich wymienionych językach, ale wygląda jak (nieco dziwny) kod PHP.

W Bash drukuje jedynie „Witaj, świecie!” (tworzenie niepotrzebnych plików po drodze).

W HQ9 + drukuje Hello World kilka razy (raz dla każdego wystąpienia Hlub h).

W Brainfuck jest to „program kota” - odczytuje ze standardowego wejścia i wysyła swoje wejście na standardowe wyjście ( ><,[.,]>>).

W PHP drukuje tekst:

czym jest „& _ @” „Witaj, świecie!” program?

Bash Wyjaśnienie

>&_@jest zamaskowany jako nieszkodliwy tekst zastępujący przekleństwo, ale w rzeczywistości jest przekierowaniem STDERR do pliku _@, więc Bash nie narzeka, żewhat nie jest poprawnym programem. Zjada równieżis a <?php kawałek i pierwszy komentarz.

Pierwszy komentarz zawiera cytat na końcu (cytaty są po to, aby zapobiec <?phpuruchomieniu).echo "Hello, World!";działa normalnie w obu językach. Następny komentarz służy do ukrycia innego cytatu i istnieje przekierowanie wyjściowe ze STDERR do pliku are, aby zjeść komunikat „//: Is a directory”.

Ponieważ zamknięcie ?>jest w cudzysłowie, nie jest uruchamiane i zostaje zjedzone wraz z drugim komentarzem i nieco później.


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

Maskuje wyniki źle skonfigurowanego serwera WWW, jako (coś, co na pierwszy rzut oka wygląda) PHP + HTML bałagan .

Zaczęło się to od małych, ale powiększyło się, gdy starałem się uczynić mniej oczywistym, co robi (gdy jest oceniany jako JS) ... mogło stać się bardziej zaciemnione niż zamierzone zadanie, przepraszam za to. W każdym razie najważniejszą rzeczą, którą chciałem uwzględnić, była moja sztuczka polegająca na osadzaniu (podzbioru) HTML, tak aby był to również prawidłowy kod JavaScript, który widać na końcu kodu.

Edycja: och, powinienem wspomnieć, że kiedy działa w kontekście strony internetowej, kod ostrzega „witaj świecie” .


Aha Uwielbiam znaki dolara. HTML javascript jest również naprawdę fajny.
Kevin Cox

Hehe, sztuczka z javascript HTML polega na tym, że <i> są porównaniami, /.../ jest dosłownym wyrażeniem regularnym (stąd potrójne ukośniki dla komentarzy ..) i JS nie przejmuje się ani trochę typami.
FireFly,

2

Python / PHP / Lua / Perl / Perl 6 / Ruby / JavaScript / HQ9 + (37 punktów)

print("Hello, World!")

W Pythonie wygląda to jak „Witaj, świecie”, ale tak naprawdę to quine napisane w PHP. Działa również w JavaScript (SpiderMonkey), Lua, HQ9 +, Perl, Perl 6 i Ruby, dla punktów bonusowych.


2

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

To wygląda jak ... 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"))
--[[*///]]--"""
  • Jeśli uruchomisz go w wersji bash, JavaScript lub Python, wydrukuje „Witaj, świecie!”
  • Jeśli uruchomisz go w Lua, wydrukuje on kod źródłowy skryptu (podany jako pierwszy argument lua ).
  • Jeśli uruchomisz go w PHP, wydrukuje tekst 99 butelek piwa
  • Jeśli uruchomisz go jako Brainfuck, będzie działał jak cat.

Wynik: 27

  • Przestrzega zasad: 3
  • Można uruchomić inny język: 1
  • Czy coś pożytecznego: 3 (program kota)
  • Działa również w JS / Python 3 / Lua / bash: 20

Mam nadzieję, że nie naginam zbyt mocno zasad :)


0

Java napisane w 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;
}

Zdobądź 3 punkty.


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

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

<!--''') # ASCII submarine

Wygląda to jak Python 2 i działa jako Python 2, drukując własne źródło w postaci dosłownej w języku Python, a także pewnego rodzaju wynik zwięzłości kodu! Jednak uruchamiany jako ES6 wyświetla „Witaj, świecie!”.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.