Kodowanie w utworze - Reprezentowanie tekstów muzycznych w wybranym przez Ciebie języku programowania [zamknięte]

13

Napisz program w wybranym przez siebie języku, który po przeczytaniu jest tekstem piosenki. To musi być ważny program, który może być skompilowany i uruchomić bez błędów. Choć technicznie można wydrukować na ekranie wszystkie teksty, zachęcamy do robienia tego ze stylem i unikania literałów strunowych, gdy tylko jest to możliwe.

Biorąc pod uwagę, że jest to trudne samo w sobie, możesz napisać jedną sekcję kodu, który nie liczy się jako czytelny w tekstach. Jednak po rozpoczęciu bloku kodu, który należy odczytać jako tekst piosenki, nie można go przerwać, dopóki piosenka nie zostanie ukończona. Możesz wskazać początek i koniec kodu piosenki za pomocą komentarzy. Podaj też same teksty piosenek, tak jak czytasz kod. Możesz być „liberalny” ze swoją interpretacją, o ile nie odejdziesz zbyt daleko od tego, co jest napisane, w przeciwnym razie będzie to kosztować punkty.

Częściowe teksty piosenek są dozwolone, ale dostajesz podwójne punkty za posiadanie słów do całej piosenki. Ocena jest podzielona na 3 kategorie:

  1. 10 punktów - Oryginalność
  2. 10 punktów - trudność piosenki
  3. 20 punktów - Reprezentacja tego utworu w kodzie.

Dla każdego zgłoszenia podam swój wynik w komentarzu poniżej. Jeśli edytujesz swoją odpowiedź, po prostu daj mi wskaźnik komentarza, a ja odpowiednio go ponownie ocenię. Jednak, aby być sprawiedliwym, każda ponowna ocena odejmuje 2 punkty od całkowitego wyniku.

Przykładem może być:

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

Który zostanie przeczytany:

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

Instrumenty nie są dozwolone, mędrcy. ;)

Neil
źródło
4
To ciekawa koncepcja i jestem zainteresowany wynikami, ale nie jest to zbyt obiektywne. Jak określa się „trudność” piosenki? (itp.)
Gaffi
3
Mocno przypomina mi zwycięzcę
IOCCC
@ Gaffi, przeważnie długość, ale także słowność. Przykład utworu, który uzyska 0 punktów, może mieć tylko 6 słów .
Neil
A co z HQ9programem 9? : P
Li-aung Yip
1
Wskazówka dla każdego, kto próbuje znaleźć odpowiednią piosenkę do kodowania: „Escape to the Void” wydaje się obiecującym tytułem :) - lyricstime.com/sepultura-escape-to-the-void-lyrics.html
Cristian Lupascu

Odpowiedzi:

8

Python - 8 + 4 + 15 = 27 punktów

Oto kilka zwrotek z filmu The Hunting of the Snark autorstwa Lewisa Carrolla.
Oblicza liczbę na podstawie algorytmu zaproponowanego w wierszu i używa go do przedstawienia dowodu na temat głosu jubjubu.

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

Oryginalny tekst:

„Biorąc Trzy jako przedmiot rozumowania o
- dogodnej liczbie do podania
- dodajemy Siedem i Dziesięć, a następnie pomnożymy
przez Tysiąc, pomniejszoną o Osiem.

„Wynik dzielimy, jak widzicie, o
dziewięćset dziewięćdziesiąt dwa:
Następnie odejmij siedemnaście, a odpowiedź musi być
dokładnie i całkowicie prawdziwa.

ugoren
źródło
Miło mi się podoba. Originality: 8/10, Song difficulty: 4/10, Representation of that song in code: 15/20, Dzięki czemu końcowy wynik 27. Wstydu nie można używać cały utwór.
Neil
2
Myślę, że kryterium „cała piosenka” ma zbyt dużą wagę. O wiele łatwiej byłoby wybrać utwór o jednym wierszu.
ugoren
Biorąc pod uwagę, że The Hunting of the Snark ma ponad 500 linii, byłby to naprawdę imponujący wyczyn.
breadbox
1
@breadbox, nawet pojedyncze dopasowanie byłoby imponującym wyczynem, cała sprawa byłaby udręką.
ugoren
6

Python (8 + 7 + 15 = 30)

Poprawny kod Pythona synchronicznie, chociaż nie robi nic szczególnie przydatnego ;-)

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

Jak należy to czytać:

Nic nie pamiętam.
Nie wiem, czy to prawda, czy sen.
Głęboko w środku krzyczę.
Ta straszna cisza mnie powstrzymuje.
...
(Metallica - One)

ChristopheD
źródło
Wow, trudny wybór piosenek, ale pod wrażeniem, jak to zrobiłeś. Originality: 8/10, Song difficulty: 7/10, Representation of that song in code: 15/20, Dzięki czemu końcowy wynik 30.
Neil
5

do

Nieco niechlujny, napisałem to w około 15 minut na chichoty. Kompiluje się i działa dobrze z najnowszą wersją G ++ / MinGW (choć tak naprawdę niewiele robi). Myślę, że możesz to sobie wyobrazić, myślę:

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;
}
Stuntddude
źródło
2

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

To jest Linux! piosenka.

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
}

Wynik:

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!
Książę John Wesley
źródło
Originality: 7/10, Song difficulty: 4/10, Representation of that song in code: 13/20. Ponieważ odłożyłeś całą piosenkę, podwaja to twój wynik, więc oznacza to, że końcowy wynik to 48. Niezły. :)
Neil
1

PHP

Próbowałem mojej ulubionej piosenki, Stairway to Heaven.

$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

}

Jak to jest czytane:

Jest kobieta, która jest pewna, że ​​wszystko, co się świeci, to złoto,
a ona kupuje schody do nieba.
Kiedy tam dotrze, wie, że jeśli wszystkie gwiazdy są blisko.
Jednym słowem może zdobyć to, po co przyszła.
Och, och, a ona kupuje schody do nieba.

Na ścianie jest znak, ale ona chce być pewna
, bo wiesz, że czasami słowa mają dwa znaczenia.
Na drzewie nad strumykiem śpiewa śpiewający ptak.
Czasami wszystkie nasze myśli są błędne.
Ooh, to mnie zastanawia,
Ooh, to mnie zastanawia.

karthik
źródło
1

do

Oto pełna piosenka.
Możesz tego posłuchać w Świecie Mamy Lisy .
Pamiętaj, że utwór jest zawarty w stanie, w jakim się znajduje, w tym interpunkcja.

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

Drukuje liczbę 4.

ugoren
źródło
1

Rubin

Moje podejście jest możliwie jak najbliższe. Łatwo jest z łańcuchem połączeń Ruby.

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

Wynik

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

Do zrobienia

  1. Przecinki wieloliniowe (argumenty)
  2. Kropki wielowierszowe (wywołania metod)
cabron
źródło
0

T-SQL Bone Thugs-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;

Tak, wiem, że trochę oszukiwałem i mogę mieć członków, którzy śpiewali, która linia też źle.

Stephen
źródło
0

C - Butelki piwa

Skompiluj i uruchom to. Teksty są umieszczane w kodzie źródłowym. Skompiluj i uruchom dane wyjściowe, aby uzyskać następny wiersz piosenki. Gdy pojawi się komunikat „Czas iść ...”, skompiluj i uruchom z liczbą butelek określoną w wierszu polecenia, np .:

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

Kod przetestowany przy użyciu VS2005: -

// 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);}
Skizz
źródło
1
Nie przepraszam za moją sztukę ASCII!
Skizz
1
Całkiem imponujące, ale jak to pasuje do wyzwania? Myślałem, że pomysł polega na tym, że możesz przeczytać źródło jako piosenkę.
ugoren
1
@ugoren: Skompiluj i uruchom plik wykonywalny z jednym parametrem, początkową liczbą piw. Następnie program wypisuje pierwszy wiersz utworu jako kod źródłowy (cóż, słowa w górnym komentarzu). Skompiluj dane wyjściowe i uruchom ponownie, aby uzyskać następny wiersz i tak dalej.
Skizz
Bardzo fajnie, ale pomysł nie jest programem, który drukuje piosenkę. Jest to program, który po odczytaniu źródła jest utworem.
ugoren
0

Perl wykonuje Barnes & Barnes

Odkąd po raz pierwszy nauczyłem się Perla, szukałem wymówki, aby skorzystać z tej -Popcji. Dzisiaj ta wymówka wreszcie się pojawiła:

#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

Uruchom go z -M5.010oprócz -Popcji, tak jak poniżej:

$ perl -PM5.010 whenyoudie
goodbye
Hangup
$ 
chlebak
źródło