Kılık değiştirerek bir program yaz [kapalı]


14

Zorluk, HQ9 + sorunlarından herhangi birini başka bir dil gibi ararken çözen bir program oluşturmaktır .

Not : Bu bir golf zorluğu değildir.

Kurallar:

  • Program çalıştırıldığında aşağıdaki görevlerden birini gerçekleştirmelidir.
    • Yazdır "Merhaba, Dünya!"
    • Kaynağının tamamını yazdırın.
    • Şarkı sözlerini "99 Duvara Bira Şişesi" olarak yazdırın ( burada görüldüğü gibi ).
  • İlk bakışta program başka bir dile benzemelidir.

Tesviye

  • Kurallara uygun çalışma programı. 3
  • "Diğer dil" çalıştırılabiliyorsa bonus puan (sözdizimi geçerlidir). +1
  • "Diğer dil" yararlı bir şey yapabilirse daha fazla puan. 3
  • Program için daha fazla dilde geçerli (ve yararlı) birçok bonus puan. 2'den fazla her dil için +5 .

1
Nasıl derecelendirilirler? Objektif bir kritere ihtiyacınız var. Buraya bakın: codegolf.stackexchange.com/help/on-topic
MrZander

Tamam, bir puan sistemi ekliyorum.
Kevin Cox

1
Yani ... çok dilli mi arıyorsunuz?
Iszi

Evet. Ancak, bir dil dışındaki herkesin özelliklerini bir ölçüde "gizlemeye" önem vererek.
Kevin Cox

4
print ("Hello, World");tek başına birçok dilde çalışacak
marinus

Yanıtlar:



18

Ruby + C + Boşluk.

Bu program C ama Ruby gibi görünüyor (ve çalışıyor). Ayrıca oraya boşluk bırakmayı başardım.

C kendi kaynağını yazdırır (maalesef tam bir quine değil). Ruby 99 şişe bira basar ve boşluk merhaba der.

#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

Ve SO ws için çok hoş olmadığından burada bir bağlantı var .


15

Golfscript / HQ9 +

9

Şarkı sözlerini 99 şişe biraya basan bir HQ9 + programı olarak iki katına çıkabilen bir Golfscript quine.

Bunun bir golf zorluğu olmadığını biliyorum, ama buna tek bir karakterle cevap verme arzusuna direnemedim.


1
Ve HQ9 + 'nın başka bir dil gibi görünemediğini varsaymak için aptaldım: D
Kevin Cox

5
Evet! Ve çılgınca "9" sayısı yalan görünüyor.
Pierre Arlaud

7

Perl, 7 puan

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

Bu baskı yapan bir Perl programıdır Hello, World!.

Puan dökümü:

  • Tüm kuralları takip eder: +3
  • Geçerli bir sözdizimi başka bir dilde mi: +1
  • Diğer dilde ilginç bir şey var mı: +3

Kenar notu:

Ne yaptığını öğrendikten sonra takıldığı yerde 'bariz' görünebilir, ancak bu bir dupe.

Devamındaki:

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

çıktı olacak:

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

7

JavaScript, 7 puan

<!--
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 ile çalıştırıldığında "Merhaba, Dünya!"

HTML olarak görüntülendiğinde şöyle görünür:

ekran görüntüsü

puanlama

  • +3 kurallarına uygun çalışma programı
  • Diğer dil sözdizimi geçerlidir +1
  • Diğer dil yararlı bir şey yapar (istediğiniz herhangi bir HTML'yi buraya koyabilirsiniz) +3

Hafif! Bu, onu değerlendiren uygulamanın son ifadenin tamamlanma değerini stdout'a yazdırdığını varsayar.
FireFly

@FireFly evet, evaltüm konsollar bunu yapar.
Kapı tokmağı

evalstdout'a yazdırmaz; işlev çağrısı ifadesinin sonucu olarak döndürür. Ama evet, sadece zıplıyorum; afedersiniz. : p
FireFly

6

C ++ / Python

#include <iostream>

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

print("Hello, World!")

Python'da (2.x ve 3.x) çalışacak ve yazdırmak için C ++ ile derlenecektir (satırbaşı ile):

Selam Dünya!


5

Aşağıda HTML'de "Merhaba, Dünya" (ve rastgele bir tablo) ve "Merhaba, Dünya!" içinde Boşluk .

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

Burada "99 Bottles" bir sürümünü bulabilirsiniz 99-bottles-of-beer.net/language-whitespace-154.html
Davio

5

PHP, HQ9 +, Brainfuck ve Bash (sanırım 23 puan)

PHP gibi görünüyor, ama ...

STDERR yönlendirmesinin ve alıntılarının kötüye kullanılması.

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

Bu, listelenen tüm dillerde işler ve işler yapar, ancak (biraz garip) PHP kodu gibi görünür.

Bash'de sadece "Merhaba Dünya!" (yol boyunca gereksiz dosyalar oluşturma).

HQ9 + 'da, Hello World'ü birkaç kez yazdırır ( Hveya her oluşumu için bir kez h).

Brainfuck'ta bir "cat programı" dır - standart girişten okur ve girişini standart çıkışa ( ><,[.,]>>) verir.

PHP'de bazı metinler yazdırır:

> & _ @ bir "Merhaba Dünya!" program?

Bash Açıklaması

>&_@bir lanetin yerine zararsız metin olarak gizlenir, ancak aslında STDERR'ın dosyaya yeniden yönlendirilmesidir _@, böylece Bash whatgeçerli bir program olmadığından şikayet etmez . Ayrıca is a <?phpbiraz ve ilk yorum yiyor .

İlk yorumun sonunda bir alıntı vardır (tırnaklar <?phpçalıştırılmasını önlemek için vardır ). echo "Hello, World!";her iki dilde de normal çalışır. Bir sonraki yorum başka bir alıntıyı gizlemeye yarar ve are"//: Bir dizin" mesajını yemek için STDERR'den dosyaya bir çıktı yönlendirmesi vardır .

Kapanış ?>tırnak içinde olduğu için , koşmaz ve ikinci yorum ve sonrasındaki bit ile birlikte yenir.


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

Yanlış yapılandırılmış bir web sunucusunun çıktısını (ilk bakışta benzeyen bir şey) PHP + HTML karmaşası gibi maskeler.

Bu küçük başladı ama ne yaptığını daha az açık hale getirmeye çalıştıkça büyüdü (JS olarak değerlendirildiğinde) ... bunun için amaçlanan görevden daha dağınık olabilir, bunun için üzgünüm. Her neyse, eklemek istediğim ana şey, HTML'nin (bir alt kümesini) gömme hilemiydi, böylece kodun sonunda gördüğünüz geçerli JavaScript kodu.

Düzenleme: oh, bahsetmeliyim, bir web sitesi bağlamında çalıştırıldığında kod "merhaba dünya" uyarır .


Aha dolar işareti vars seviyorum. Javascript html de gerçekten harika.
Kevin Cox

Hehe, javascript HTML ile hile <ve> karşılaştırmalar, /.../ bir normal ifade değişmez (bu nedenle yorumlar için üçlü eğik çizgiler ..) ve JS türleri hakkında bir bit umurumda değil.
FireFly

2

Python / PHP / Lua / Perl / Perl 6 / Yakut / JavaScript / HQ9 + (37 puan)

print("Hello, World!")

Bu Python "Merhaba, Dünya" gibi görünüyor, ama aslında PHP ile yazılmış bir quine. Ayrıca bonus puanları için JavaScript (SpiderMonkey), Lua, HQ9 +, Perl, Perl 6 ve Ruby'de çalışır.


2

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

Bu ... Umm ... Gizli 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"))
--[[*///]]--"""
  • Eğer bash, JavaScript veya Python ile çalıştırırsanız "Merhaba, Dünya!"
  • Lua'da çalıştırırsanız, komut dosyasının kaynak kodunu yazdırır (ilk argüman olarak sağlandıysa lua).
  • PHP'de çalıştırırsanız 99 şişe bira sözlerini basar
  • Brainfuck olarak çalıştırırsanız, bu gibi çalışır cat.

Puan: 27

  • Kuralları takip eder: 3
  • Diğer dil koşabilir: 1
  • Yararlı bir şey yapar: 3 (kedi programı)
  • JS / Python 3 / Lua / bash: 20'de de çalışır

Umarım kuralları çok fazla bükmüyorum :)


0

C ++ ile yazılmış Java

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


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

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

<!--''') # ASCII submarine

Bu, Python 2'ye benziyor ve Python 2 olarak çalışıyor, kendi kaynağını Python dizgi hazır biçiminde ve bir tür kod kısaltma puanıyla yazdırıyor! Ancak ES6 olarak çalıştırıldığında “Merhaba dünya!”

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.