Şarkıda kodlama - Seçtiğiniz bir programlama dilinde müzik sözlerini temsil etme [kapalı]


13

Okuduğunuzda bir şarkının sözleri olan programı kendi dilinizde yazın. Bu olmalı derlenmiş ve hatasız çalıştırılabilir geçerli bir program. Tüm şarkı sözlerini teknik olarak ekrana yazdırabilseniz de, mümkün olduğunca stil ve dize değişmezlerinden kaçınmanız önerilir.

Bunun kendi başına zor olduğu göz önüne alındığında, şarkı sözlerinde okunabilir sayılmayan tek bir kazan plakası kodu yazmanıza izin verilir. Ancak, bir şarkının sözleri olarak okunması gereken kod bloğu başladığında, şarkı bitinceye kadar sözünü kesemezsiniz. Şarkı kodunun başlangıcını ve sonunu yorumlarla belirtebilirsiniz. Lütfen şarkı sözlerini de kodu okuduğunuz gibi belirtin. Yazılı olandan çok fazla sapmadığınız sürece yorumunuzla "liberal" olabilirsiniz, aksi takdirde puan kazanırsınız.

Kısmi şarkı sözlerine izin verilir, ancak kelimelerin tamamını bir şarkıya verdiğiniz için çift puan alırsınız. Yargılama 3 kategoriye ayrılır:

  1. 10 puan - Özgünlük
  2. 10 puan - Şarkı zorluğu
  3. 20 puan - Bu şarkının kodda gösterimi.

Her başvuru için puanınızı aşağıda bir yorumda vereceğim. Cevabınızı düzenlerseniz, bana bir yorum göstergesi verin, buna göre yeniden değerlendireceğim. Ancak, adil olmak için, her yeniden değerlendirme toplam puanınızdan 2 puan çıkarır.

Örnek olarak şunlar verilebilir:

public class Song {
    public String play() {
        // Song begin
        try {
            if(this instanceof TheRealLife || this instanceof JustFantasy) {
                throw new InALandSlide();
            }
        } catch (InALandSlide e) {
        }
        return "No \"FromReality\"";
        // Song end
    }

    public static void main(String [] args) {
        Song song = new Song();
        song.play();
    }
}

Hangi okunuyor:

Is this TheRealLife?
Or is this JustFantasy?
Caught InALandSlide.
No escape \"FromReality\"

Aletlere izin verilmez, bilge çocuklar. ;)


4
Bu ilginç bir kavram ve sonuçları görmek istiyorum, ama bu çok objektif değil. Şarkının 'zorluğunu' nasıl belirler? (vb.)
Gaffi

3
Bana bu
IOCCC

@Gaffi, çoğunlukla uzunluk, ama aynı zamanda kelime. 0 olan bir şarkı örneği, bu şarkı sadece 6 kelime uzunluğunda olabilir .
Neil

HQ9Programa ne dersiniz 9? : P
Li-aung Yip

1
Kodlama için uygun bir şarkı bulmaya çalışan herkes için ipucu: "Boşluğa Kaçış" umut verici bir başlık gibi görünüyor :) - lyricstime.com/sepultura-escape-to-the-void-lyrics.html
Cristian Lupascu

Yanıtlar:


8

Python - 8 + 4 + 15 = 27 puan

İşte Lewis Carroll'un Snark'ın Avlanması'ndan birkaç stanza .
Şiirde önerilen algoritmaya dayalı olarak bir sayı hesaplar ve bunu, jubjub'ın sesi hakkında bir kanıt belirtmek için kullanır.

class taking:
    def __init__(self, n): convenient.val = (n)
    def __enter__(self): pass
    def __exit__(self, type, value, traceback): pass
def a(x,y): x.val = y(x.val); return True
class We:
    def __init__(self): self.val=0
    def __add(self, y): return y+sum(self.x)
    def add(self, *x): self.x = x; return self.__add
    def multiply(self,x,by,diminished_by): self.val *= by-diminished_by
    def proceed2divide(self,x,by): self.val /= by
    def subtract(self,x): self.val -= x; return True
perfectly = lambda x: x and not not x
def must_be(x):
    if x: 
        print "\n".join(["Tis the %s of the Jubjub!"%["voice","note","song"][x%3] for x in range(out.val)])
        return out.val
out=convenient=as_you_see=we=then=the=We()
_ = exactly = 15
with\
\
    taking(3) as the_subject_to_reason_about:
    a(convenient, #2 state
    we.add(7,_ & 10)) and then.multiply(out,
    by=1000, diminished_by=8)

    the_result = we.proceed2divide(as_you_see,
    by=992)
    then.subtract(17) and the; answer = must_be(
    exactly and perfectly(True))

Orijinal metin:

"Üçü aklın öznesi olarak kabul etmek -
Uygun bir sayı -
Yedi ve On ekleriz ve sonra
Sekiz azalmış Bin Kişi ile çarparız .

"Gördüğünüz gibi, bölmeye devam ettiğimiz sonuç,
Dokuz Yüz Doksan İki ile:
O zaman Onyedi Çıkarın ve cevap
Tam ve mükemmel şekilde doğru olmalıdır.


Güzel, hoşuma gitti. Originality: 8/10, Song difficulty: 4/10, Representation of that song in code: 15/20, Son puan 27. Utanç yapma sen şarkının tamamını kullanamadı.
Neil

2
Bence "tüm şarkı" kriterinin çok fazla ağırlığı var. Tek satırlık bir şarkı seçmek çok daha kolay olurdu.
ugoren

Snark'ın Avlanmasının 500 çizginin üzerinde olduğu göz önüne alındığında, bu gerçekten etkileyici bir başarı olurdu.
ekmek kutusu

1
@breadbox, tek bir uyum bile etkileyici bir başarı olurdu, her şey acı verici olurdu.
ugoren

6

Python (8 + 7 + 15 = 30)

Özellikle yararlı bir şey yapmasa da geçerli Python kodu senkronize ;-)

from sys import exit as stops ; import os
thing = [] ; me = can = remember = False ; this = open(__file__)
def terrible(v): return v

# ==== start song snippet

me = can = remember = not any(thing)
can = not this.tell(), [True, "dream"]
locals()["deep"] = {"down":{"inside":{"feel_to":"scream"}}}
if `this` + (terrible("silence")): stops(me)

# ===== end song snippet

Nasıl okunması gerekiyor:

Hiçbir şey hatırlayamıyorum.
Bunun doğru mu yoksa rüya mı olduğunu söyleyemem.
Derinlerde çığlık atıyorum.
Bu korkunç sessizlik beni durduruyor.
...
(Metallica - Bir)


Vay canına, zor şarkı seçimi, ama bunu nasıl başardığınızdan çok etkilendim. Originality: 8/10, Song difficulty: 7/10, Representation of that song in code: 15/20, Son puan 30. verme
Neil

5

C

Biraz özensiz, bunu kıkırdamalar için yaklaşık 15 dakika içinde yazdım. Derler ve en son G ++ / MinGW sürümü ile iyi çalışır (gerçekten fazla bir şey yapmaz). Bunu kendiniz iyi anlayabilirsiniz, bence:

class Rick {

public:

    struct us { bool you; bool me; };

    bool giveYouUp()  { return false; }
    bool letYouDown() { return false; }
    bool runAround()  { return false; }
    bool desertYou()  { return false; }
    bool makeYouCry() { return false; }
    bool sayGoodbye() { return false; }
    bool tellALie()   { return false; }
    bool hurtYou()    { return false; }

    bool thinkingOf(bool whatImThinkingOf) { return whatImThinkingOf; }
    bool justWantTo(bool whatIWantToDo) { return whatIWantToDo; }
    bool tellYou(bool whatIWantToTellYou) { return whatIWantToTellYou; }

    void roll() {
        bool gonna = false;
        while (gonna) {
            giveYouUp();
            letYouDown();
            gonna = (runAround() && desertYou());
            makeYouCry();
            sayGoodbye();
            gonna = (tellALie() && hurtYou());
        }

        bool strangersToLove = true;
        us we = {!strangersToLove, !strangersToLove};

        bool knowTheRules = true;
        bool you = knowTheRules, I = knowTheRules;

        bool aFullCommitment = true;
        we.me = thinkingOf(aFullCommitment);

        int me = 0;
        Rick* guys[] = {this, nullptr, nullptr, nullptr, nullptr};

        bool howImFeeling = true;
        we.me = justWantTo(tellYou(howImFeeling));

        bool understand = true;
        while (we.you != understand) {
            we.you = understand;
        }
    }

};

int main() {
    Rick rick;
    rick.roll();

    return 0;
}

2

Scala (48 = 2 * (7 + 4 + 13))

Linux! şarkı.

object Song extends App {
  // Compose a song
  trait Compose {
    override def toString = {
      val token = """^.*\$(.*)\$.*$""".r
      val token(verse) = super.toString
      verse.replaceAll("([a-z])([A-Z])", "$1 $2").capitalize
    }
    def excl(ex: String) = println(this + ex)
    def !!(c: Compose) = { excl("."); c }
    def ***(c: Compose) = { excl("..."); c }
    def !(c: Compose) = { excl("!"); c }
    def *(c: Compose) = { excl(","); c }
    def ! = excl("!")
  }
  // It's linux  - lyrics
  case object ItBootsUpFine extends Compose
  case object AllOfTheTime extends Compose
  case object TuxThePenguinIsGreat extends Compose
  case object aPieInTheFace extends Compose
  case object ToTheManIHate extends Compose
  case object EveryoneKnowsItsLinux extends Compose
  case object StableForYouAndMe extends Compose
  case object ItsLinux extends Compose
  case object NoMoreBSODs extends Compose
  case object BetterThanNT extends Compose
  case object BestOfAllItsFree extends Compose
  case object FreeSoftwareForYouAndMe extends Compose
  case object LinuxGPLd extends Compose

  // Singer to sing a song
  def sing(song: => Unit) = { song }

  // Song begins
  sing {
      ItBootsUpFine!
      AllOfTheTime!!
      TuxThePenguinIsGreat!
      aPieInTheFace*
      ToTheManIHate***
      EveryoneKnowsItsLinux!
      ItsLinux!
      ItsLinux!
      StableForYouAndMe!
      ItsLinux!
      ItsLinux!
      NoMoreBSODs!
      ItsLinux!
      ItsLinux!
      BetterThanNT!
      ItsLinux!
      ItsLinux!
      BestOfAllItsFree!
      FreeSoftwareForYouAndMe***
      LinuxGPLd!
  }
  // Song ends
}

Çıktı:

It Boots Up Fine!
All Of The Time.
A Pie In The Face,
Tux The Penguin Is Great!
To The Man IHate...
Everyone Knows Its Linux!
Its Linux!
Its Linux!
Stable For You And Me!
Its Linux!
Its Linux!
No More BSODs!
Its Linux!
Its Linux!
Better Than NT!
Its Linux!
Its Linux!
Best Of All Its Free!
Free Software For You And Me...
Linux GPLd!

Originality: 7/10, Song difficulty: 4/10, Representation of that song in code: 13/20. Tüm şarkıyı indirdiğinizden, bu puanınızı iki katına çıkarır, bu da son puanınızın 48 olduğu anlamına gelir. :)
Neil

1

PHP

En sevdiğim şarkıyı Stairway to Heaven denedim.

$GLOBALS['sign']= 'words';

class lady extends me // there is a lady
{
  function __construct(){   // who is sure
    global $glitters = 'gold'; // all that glitters is gold
    $buy('stairway_to_heaven'); // and shes buying the stairway to heaven
  }
  $know[] = 'stars are close'; // when she get's there she knows, the stars are close
  function word(){  // with a word she can get
    debug_backtrace(); // what she come for
  }

  $this->buy('stairway_to_heaven'); // and she's buying the stairway to heaven

  $sign = 'words'; // there is a sign on the door
  if(!$sign === $GLOBALS['sign']) // but she want to be sure, cause you know sometimes words have 2 meanings
    exit();

  in_array($tree / $brook, $songbird ? 'sings'); // (literal) in a tree by the brook, there is a songbird who sings

  mysql_real_escape_string($_GET['thoughts']); // sometimes all of our thoughts are misgiven
  for ($i=0;$i<2;i++)
    parent::wonder(); // makes me wonder , makes me wonder

}

Nasıl okunur:

Parlayan her şeyin altın olduğundan emin olan bir hanımefendi var
ve o da cennete bir merdiven alıyor.
Oraya vardığında bilir, eğer yıldızların hepsi yakınsa
Bir kelime ile geldiği şeyi alabilir.
Ooh, ooh ve cennete bir merdiven alıyor.

Duvarda bir işaret var ama emin olmak istiyor
'Çünkü bazen kelimelerin iki anlamı var.
Dere kenarında bir ağaçta şarkı söyleyen bir ötücü kuş vardır,
Bazen tüm düşüncelerimiz yanlış düşünülür.
Ooh, bu beni meraklandırıyor,
Ooh, beni merak ediyor.


1

C

İşte tam bir şarkı.
Onu Mama Lisa'nın Dünyasında dinleyebilirsiniz .
Noktalama işaretleri dahil olmak üzere şarkının olduğu gibi eklendiğini unutmayın.

#define breath,
#define smell breath
#define an;}Englishman; main(){printf("%d\n",sizeof
struct x{int
// Song starts here
Fee, fa, fie, fo, fum,
I smell the breath of an Englishman.
// Song ends here
I);}

4 sayısını yazdırır.


1

Yakut

Mümkün olduğunca yakın temsili almam. Ruby'nin çağrı zinciri ile çok kolay.

$lines = []

def thisline n=2
    caller(n).first.match(/:(\d+):/)[1].to_i
end

class Chain < Array
    def method_missing method, *args
        $lines[thisline] = Chain[first, self[1], [method, thisline, args]]
    end

    def -(arg)
        $lines[thisline] = Chain[' - ', thisline, self, arg]
    end

    def tokens
        if size < 3
            if first == :_
                []
            else
                [first.to_s.tr(?_, ?\s).strip]
            end
        elsif size < 4
            [first.to_s.tr(?_, ?\s)] + at(2).tokens
        else
            lhs = case el = at(2)
            when Chain then el.tokens
            when String
                el.empty? ? [?'] : [?', el, ?']
            end

            rhs = case el = at(3)
            when Chain then el.tokens
            when Range then el.first.tokens + ['... '] + el.last.tokens
            end

            lhs + [first.to_s.tr(?_, ?\s)] + rhs
        end
    end
end

def self.method_missing method, *args
    line = thisline(3)

    if args.length > 1
        newlines = args.first.is_a?(String) ? args.first.count(?\n) : 0
        $lines[line] = false
        $lines[line-newlines] = Chain[method, line, Chain[', ', line, *args]]
    else
        $lines[line] = Chain[method, line, *args]
    end
end

####################

The pest in_the eyes of death follows us
Through the dirty streets of blood
It begins to eat inside us, decaying_our_bones
How will we escape_if the void covers our lungs?
We are buried_in the spewed trash_for ourselves

Blood _, pain - nothing_to_say
Why then_- must_we_die?

Escape to the void
Escape to the void

I look at my face on the other side of the mirror
My face falls down_in pieces full of worms
I burst my rotten heart with my own hands
I'm dying and I can',t_help_myself

Blood _, pain - nothing_to_say
Why then_- must_we_die?

What have I been running from?
I'',m_not_guilty
You've shown me the worst way
Cause you',re_my_victim... the_next_one

The pest in_the eyes of death follows us
Through the dirty streets of blood
It begins to eat inside us, decaying_our_bones
How will we escape if_the void covers our lungs?
We are buried in_the spewed trash_for ourselves

Blood _, pain - nothing_to_say
Why then_ - must_we_die?

Escape to the void
Escape to the void

####################

$lines.drop_while {|line| !line }.each_with_index {|line, i|
    puts if line.nil?
    next if not line

    line = line.tokens
    line.map!.with_index {|el, j|
        punct = [', ', ' - ', '... ', ?']

        if line[j-1] == ?' and el == ', '
            ''
        elsif punct.include?(el) or punct.include?(line[j+1])
            el
        else
            el + ?\s
        end
    }

    puts line.join
}

Çıktı

The pest in the eyes of death follows us 
Through the dirty streets of blood 
It begins to eat inside us, decaying our bones 
How will we escape if the void covers our lungs? 
We are buried in the spewed trash for ourselves 

Blood, pain - nothing to say 
Why then - must we die? 

Escape to the void 
Escape to the void 

I look at my face on the other side of the mirror 
My face falls down in pieces full of worms 
I burst my rotten heart with my own hands 
I'm dying and I can't help myself 

Blood, pain - nothing to say 
Why then - must we die? 

What have I been running from? 
I'm not guilty 
You've shown me the worst way
Cause you're my victim... the next one 

The pest in the eyes of death follows us 
Through the dirty streets of blood 
It begins to eat inside us, decaying our bones 
How will we escape if the void covers our lungs? 
We are buried in the spewed trash for ourselves 

Blood, pain - nothing to say 
Why then - must we die? 

Escape to the void 
Escape to the void

Yapmak

  1. Çok satırlı virgüller (bağımsız değişkenler)
  2. Çok satırlı noktalar (yöntem çağrıları)

0

T-SQL Kemik Eşkıyaları-N-Harmony

DECLARE @line1 varchar(25);
DECLARE @line2 varchar(25);
DECLARE @line4 varchar(25);
DECLARE @line5 varchar(25);

SET @line1 = 'Wake up, wake up, wake up,';
SET @line2 = 'its the';
SET @line4 = 'to get up, get up get up';
SET @line5 = 'so cash your checks and get up';

SELECT @line1 as Layzie, @line2 as Bizzy,
CONVERT(date,DATEADD(day, -
(SELECT
DATEPART(day, GETDATE()) 
- 1), GETDATE())) as FirstOfTheMonth,
@line4 as Layzie, @line5 as Bizzy;

Evet, biraz hile yaptığımı biliyorum ve hangi hattı yanlış söyleyen üyelerim olabilir.


0

C - Bira Şişeleri

Derleyin ve çalıştırın. Şarkı sözleri kaynak koduna yerleştirilir. Bir sonraki şarkı satırını almak için çıktıyı derleyin ve yürütün. "Gitme zamanı ...." yazdığında, komut satırında belirtilen şişe sayısını derleyin ve yürütün, örneğin:

cl prog.c
prog 32 > prog1.c
cl prog1.c
prog1 > .... etc

VS2005 kullanılarak test edilen kod: -

// Time to go to the shop and get some beer
//
//
//
//
// #####.#####.#####.#####.#####.#####.#####
// ##.#####.#####.#####.#####.#####.#####.##
// #####.#####.#####.#####.#####.#####.#####
// ##.#####.#####.#####.#####.#####.#####.##

char *z [] = {
"void l(char *s,int b){int i;printf(\"// \");for(i=0;i<b;++i)printf(s);",
"printf(\"\\n\");}\nint main(int argc, char *argv[]){\nint i,j,k,x=%d;",
"char*p;\nif(!x&&argc==2)x=atoi(argv[1]);\nif(!x){printf(\"// Time to ",
"go to the shop and get some beer\\n//\\n//\\n//\\n//\\n\");k=7;\n",
"}else{printf(\"// %%d bottles of beer on the wall, %%d bottles of beer",
".\\n\",x,x);printf(\"// Take one down and pass it round, \");\n",
"if(x>1)printf(\"%%d bottles of beer on the wall.\\n//\\n\",x-1);\n",
"else printf(\"no more bottles of beer on the wall.\\n//\\n\");\n",
"k=x>2?x:2;l(\"  ^   \",x);l(\" / \\\\  \",x);l(\"/   \\\\ \",x);",
"l(\"|   | \",x);l(\"|Duf| \",x);l(\"|   | \",x);l(\"----- \",x);}\n",
"for(i=0;i<4;++i){\nprintf(\"// %%s\", i&1 ? \"##.\" : \"\");\n",
"for(j=i&1;j<k;++j)\nprintf(\"%%s#####\",j!=(i&1)?\".\":\"\");\n",
"printf(\"%%s\\n\",i&1?\".##\":\"\");}\nprintf(\"\\nchar *z [] = {\\n\");\n",
"for(i=0;i<sizeof z/sizeof z[0];++i){\nprintf(\"\\\"\");\n",
"for(p=z[i];*p;++p)\nswitch (*p){\ncase '\\n':printf(\"\\\\n\");break;\n",
"case '\\\\':printf(\"%%c%%c\",92,92);break;\n",
"case '%%':printf(\"%%c\",37);break;\ncase '\"':printf(\"%%c%%c\",92,'\"');break;\n",
"default:printf(\"%%c\", *p);break;}\nprintf(\"\\\",\\n\");}\n",
"printf(\"};\\n\");\nfor(i=0;i<sizeof z/sizeof z[0];++i)\n",
"printf(z[i],x?x-1:0);}\n",
};
void l(char *s,int b){int i;printf("// ");for(i=0;i<b;++i)printf(s);printf("\n");}
int main(int argc, char *argv[]){
int i,j,k,x=0;char*p;
if(!x&&argc==2)x=atoi(argv[1]);
if(!x){printf("// Time to go to the shop and get some beer\n//\n//\n//\n//\n");k=7;
}else{printf("// %d bottles of beer on the wall, %d bottles of beer.\n",x,x);printf("// Take one down and pass it round, ");
if(x>1)printf("%d bottles of beer on the wall.\n//\n",x-1);
else printf("no more bottles of beer on the wall.\n//\n");
k=x>2?x:2;l("  ^   ",x);l(" / \\  ",x);l("/   \\ ",x);l("|   | ",x);l("|Duf| ",x);l("|   | ",x);l("----- ",x);}
for(i=0;i<4;++i){
printf("// %s", i&1 ? "##." : "");
for(j=i&1;j<k;++j)
printf("%s#####",j!=(i&1)?".":"");
printf("%s\n",i&1?".##":"");}
printf("\nchar *z [] = {\n");
for(i=0;i<sizeof z/sizeof z[0];++i){
printf("\"");
for(p=z[i];*p;++p)
switch (*p){
case '\n':printf("\\n");break;
case '\\':printf("%c%c",92,92);break;
case '%':printf("%c",37);break;
case '"':printf("%c%c",92,'"');break;
default:printf("%c", *p);break;}
printf("\",\n");}
printf("};\n");
for(i=0;i<sizeof z/sizeof z[0];++i)
printf(z[i],x?x-1:0);}

1
ASCII sanatım için özür dilemiyorum!
Skizz

1
Oldukça etkileyici, ama meydan okumayla nasıl eşleşiyor? Fikri, kaynağı bir şarkı olarak okuyabileceğinizi düşündüm.
ugoren

1
@ugoren: Yürütülebilir dosyayı derlenen ve tek bir parametre olan başlangıç ​​bira sayısı ile çalıştırın. Daha sonra program, şarkının ilk ayetini kaynak kodu olarak verir (üst yorumdaki şarkı sözleri). Çıkışı derleyin ve bir sonraki ayeti almak için tekrar çalıştırın.
Skizz

Çok güzel, ama fikir şarkıyı basan bir program değil. Kaynağı okunduğunda şarkı IS.
ugoren

0

Perl, Barnes & Barnes'ı canlandırıyor

Perl'i ilk öğrendiğimden beri, -Pseçeneği kullanmak için bir bahane istedim . Bugün, bu bahane sonunda geldi:

#define cry $$
#define people $_
#define some kill
#define we people
#define whenyoudie END
sub yeah{}

# "When You Die", Barnes & Barnes

whenyoudie { you stop drinking beer }
whenyoudie { you stop being here }
whenyoudie { some people,cry }
whenyoudie { we=say "goodbye" }

                yeah

Aşağıdaki gibi seçeneğe -M5.010ek olarak çalıştırın -P:

$ perl -PM5.010 whenyoudie
goodbye
Hangup
$ 
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.