Citant Big Brother

16

Tâche: demandez à votre programme de choisir au hasard l'une des deux guillemets suivants lors de l'exécution et d'imprimer celle-ci, exactement comme indiqué.

1:

Under the spreading chestnut tree
I sold you and you sold me.
There lie they, and here lie we
Under the spreading chestnut tree.

2:

WAR IS PEACE.
FREEDOM IS SLAVERY.
IGNORANCE IS STRENGTH.

Restrictions: Les mots spreading, chestnut, PEACE, FREEDOMet STRENGTH doit apparaître dans votre code. Aucun mot des deux citations ci-dessus ne doit apparaître plusieurs fois dans votre code .

La solution la plus courte l'emporte.

cupofjoe
la source
1
Ok j'ai choisi le premier. Honnête! xkcd.com/221
edc65
9
@ edc65 Ce n'est plus drôle .
Martin Ender
@ MartinBüttner pour ne pas être drôle, mais pour suggérer une règle plus explicite. En lisant la première fois, j'ai vraiment pensé que je pourrais en choisir un au hasard, puis commencer à travailler.
edc65
@ edc65 Ah je vois, le libellé était autrefois différent.
Martin Ender

Réponses:

3

PHP 179

Inspiré par la réponse d' es1024 .

<?=strtr(rand()%2?"0
I 1 232 1 me.
T5 they,35 we
0.
":"WAR4PEACE.
FREEDOM4SLAVERY.
IGNORANCE4STRENGTH.
",["Under the spreading chestnut tree",sold,you," and "," IS ","here lie"]);
core1024
la source
4

Perl ( 191 184 caractères)

$_=$$&1?"0
I12321me6T4they,34we
06":"WAR5PEACE6FREEDOM5SLAVERY6IGNORANCE5STRENGTH6";s/\d/("Under the spreading chestnut tree"," sold ",you," and ","here lie "," IS ",".
")[$&]/ge;print

Merci @ core1024 pour des conseils sur le golf.

es1024
la source
1
Vous pouvez remplacer 6 par de nouvelles lignes, déposer les guillemets "you"et utiliser $$&1comme générateur aléatoire :)
core1024
3

Java, 338

Je ne peux pas le faire en dessous de 338 ...

class B{public static void main(String[]a){String b="Under the spreading chestnut tree",c="sold ",d="you ",e="and ",f="me.\nT",g="here lie ",h=".\n",i=" IS ";if(Math.random()>.5)System.out.print(b+"\nI "+c+d+e+d+c+f+g+"they, "+e+g+"we\n"+b+h);else System.out.print("WAR"+i+"PEACE"+h+"FREEDOM"+i+"SLAVERY"+h+"IGNORANCE"+i+"STRENGTH"+h);}}

Peu dégouliné:

class B{public static void main(String[]a){String b="Under the spreading chestnut tree",c="sold ",d="you ",e="and ",f="me.\nT",g="here lie ",h=".\n",i=" IS ";
if(Math.random()>.5)System.out.print(b+"\nI "+c+d+e+d+c+f+g+"they, "+e+g+"we\n"+b+h);
else System.out.print("WAR"+i+"PEACE"+h+"FREEDOM"+i+"SLAVERY"+h+"IGNORANCE"+i+"STRENGTH"+h);}}
CoolWilly
la source
1
Oui, vous pouvez codergolf.stackexchange.com/questions/6671/… .
Fabinout
Merci pour le lien! Je vais chercher quelque chose d'utile demain.
CoolWilly
@Fabinout J'ai essayé quelques astuces, mais elles n'ont pas aidé. ( java.io.PrintStream p=System.out, ajouté 15 octets au total,, static<T>void p(T o){System.out.print(o);}ajouté 12). D'autres suggestions?
CoolWilly
utiliser un bloc statique au lieu d'une déclaration principale
Fabinout
Bloc statique * 310 CHAR *: classe B {statique {Chaîne b = "Sous le marronnier qui s'étend", c = "vendu", d = "vous", e = "et", f = "moi. \ NT", g = "ici se trouvent", h = ". \ n", i = "EST"; si (Math.random ()>. 5) System.out.print (b + "\ nI" + c + d + e + d + c + f + g + "ils", + e + g + "nous \ n" + b + h); sinon System.out.print ("GUERRE" + i + "PAIX" + h + "LIBERTÉ" + i + "ESCLAVAGE "+ h +" IGNORANCE "+ i +" FORCE "+ h);}}
Fabinout
2

Javascript 229 254 256

Modifier 1 en utilisant new Datecomme suggéré par @Doorknob - je ne sais toujours pas comment les dates javascript se transforment en chaînes ou entiers ou autre

Edit 2 simplifié. Beaucoup.

t=(new Date&1
   ?'0WAR0 IS 0PEACE0.\n0FREEDOM020SLAVERY040IGNORANCE020STRENGTH.'
   :'0Under the spreading chestnut tree0\nI 0sold 0you 0and 04030me.\nT0here lie 0they, 05090we\n010.'
  ).split(0);
for(i=o='';j=t[++i];)o+=t[j|0||i];alert(o)
edc65
la source
new Dateest plus courte queDate.now()
Poignée de porte
1
Pour expliquer la Dateconversion: > La date JavaScript est basée sur une valeur de temps qui est en millisecondes depuis minuit 01 janvier 1970 UTC. Une journée contient 86 400 000 millisecondes. La plage d'objets Date JavaScript est comprise entre -100 000 000 jours et 100 000 000 jours par rapport au 1er janvier 1970 UTC. , lorsque vous l'avez &, il est automatiquement converti en Number. Donc, vous faites essentiellement le choix aléatoire selon qu'il s'agit d'une milliseconde paire ou impaire depuis l' 1970-01-01T00:00:00.000Zépoque.
Bob
@Doorknob pourriez-vous écrire un court article pour ce générateur de nombres aléatoires plus court dans codegolf.stackexchange.com/questions/2682/… Je ne l' ai pas encore vu et je pense que cela pourrait être très utile.
flawr
@flawr Done
Poignée de porte
2

C # (268) (260) (256)

Ceci est exécutable dans LINQPad, en utilisant la Dump()méthode:

string b="Under the spreading chestnut tree",c="sold ",d="you ",e="and ",f="me.\nT",g="here lie ",h=" IS ";if(new Random().Next(9)>4)(b+"\nI "+c+d+e+d+c+f+g+"they, "+e+g+"we\n"+b+".").Dump();else("WAR"+h+"PEACE.\nFREEDOM"+h+"SLAVERY.\nIGNORANCE"+h+"STRENGTH.").Dump();

Non golfé:

string b="Under the spreading chestnut tree",c="sold ",d="you ",e="and ",f="me.\nT",g="here lie ",h=" IS ";

if(new Random().Next(9)>4)
    (b+"\nI "+c+d+e+d+c+f+g+"they, "+e+g+"we\n"+b+".").Dump();
else
    ("WAR"+h+"PEACE.\nFREEDOM"+h+"SLAVERY.\nIGNORANCE"+h+"STRENGTH.").Dump();

Mise à jour:

En utilisant l'opérateur ternaire et 1 variable supplémentaire, j'ai pu couper encore 6 caractères:

string a,b="Under the spreading chestnut tree",c="sold ",d="you ",e="and ",f="me.\nT",g="here lie ",h=" IS ";a=new Random().Next(9)>4?(b+"\nI "+c+d+e+d+c+f+g+"they, "+e+g+"we\n"+b+"."):("WAR"+h+"PEACE.\nFREEDOM"+h+"SLAVERY.\nIGNORANCE"+h+"STRENGTH.");a.Dump();

Non golfé:

string a,b="Under the spreading chestnut tree",c="sold ",d="you ",e="and ",f="me.\nT",g="here lie ",h=" IS ";

a=new Random().Next(9)>4 ?
    (b+"\nI "+c+d+e+d+c+f+g+"they, "+e+g+"we\n"+b+".") :
    ("WAR"+h+"PEACE.\nFREEDOM"+h+"SLAVERY.\nIGNORANCE"+h+"STRENGTH.");

a.Dump();

Update2:

Grâce à l'ingénieuse suggestion de tsavinhoj'ai pu enregistrer 4 caractères supplémentaires en plaçant des accolades autour de l'opération ternaire:

string b="Under the spreading chestnut tree",c="sold ",d="you ",e="and ",f="me.\nT",g="here lie ",h=" IS ";(new Random().Next(9)>4?(b+"\nI "+c+d+e+d+c+f+g+"they, "+e+g+"we\n"+b+"."):("WAR"+h+"PEACE.\nFREEDOM"+h+"SLAVERY.\nIGNORANCE"+h+"STRENGTH.")).Dump();

Non golfé:

string b="Under the spreading chestnut tree",c="sold ",d="you ",e="and ",f="me.\nT",g="here lie ",h=" IS ";
(new Random().Next(9)>4?
    (b+"\nI "+c+d+e+d+c+f+g+"they, "+e+g+"we\n"+b+"."):
    ("WAR"+h+"PEACE.\nFREEDOM"+h+"SLAVERY.\nIGNORANCE"+h+"STRENGTH.")
).Dump();
Abbas
la source
1
Vous pouvez enregistrer 4 caractères supplémentaires en supprimant a et en le remplaçant par des crochets comme celui-ci: chaîne b = "Sous le marronnier qui s'étend", c = "vendu", d = "vous", e = "et", f = "moi . \ nT ", g =" mentir ici ", h =" EST "; (nouveau Random (). Suivant (9)> 4? (b +" \ nI "+ c + d + e + d + c + f + g + "ils", + e + g + "nous \ n" + b + ".") :( "GUERRE" + h + "PAIX. \ nFREEDOM" + h + "ESCLAVAGE. \ nIGNORANCE" + h + "FORCE.")). Déverser();
tsavinho
1

Python 3 - 228

for x in[b"AB:87078@624>049BA6",b"?;<61;=63;56"][id(id)%3-1]:print("and |FREEDOM|T|IGNORANCE|here lie |STRENGTH|.\n|you |sold |we|I | IS |PEACE|SLAVERY|they, |WAR|me|Under the spreading chestnut tree|\n".split("|")[x-48],end="")

Légèrement non golfé:

# id(id) returns an even number based on memory address of id
# id(id)%3-1 gives -1, 0 or 1
randomNumber = id(id)%3-1

# Word list
words = "and |FREEDOM|T|IGNORANCE|here lie |STRENGTH|.\n|you |sold |we|I | IS |PEACE|SLAVERY|they, |WAR|me|Under the spreading chestnut tree|\n".split("|")

# Byte Literals for Under the chestnut and WAR IS PEACE
# each byte correspond to the word's index in the word list
byteLiterals = [b"AB:87078@624>049BA6", b"?;<61;=63;56"]
choice = byteLiterals[randomNumber]

for x in choice: 
    print(words[x-48], end="") # Print each word out
Vectorisé
la source
1

PowerShell 205

("{0}.`nI{1}{2}{3}{2}{1} me.`nT{4}they,{3} {4}we`n{0}."-f"Under the spreading chestnut tree"," sold"," you"," and","here lie "),("WAR","PEACE.`nFREEDOM","SLAVERY.`nIGNORANCE","STRENGTH."-join" IS ")|Random

Utilise l' -fopérateur pour mettre des chaînes sur la première citation, et la seconde est jointe par IS, après quoi il sélectionne un élément aléatoire de ces 2 citations et l'imprime ...

DarkAjax
la source
1

JavaScript / jQuery 396

var B={
U:"Under the spreading chestnut tree",
s:"sold ",
y:"you ",
l:"lie ",
a:"and ",
i:"IS ",
b:"</br>"
};
var A={
P:B.U+B.b+"I "+B.s+B.y+B.a+B.y+B.s+"me."+B.b
+"There "+B.l+"they, "+B.a+"here "+B.l+"we."+B.b+B.U,
Q:"WAR "+B.i+"PEACE."+B.b+"FREEDOM "+B.i+"SLAVERY."+B.b
+"IGNORANCE "+B.i+"STRENGTH."
};
$(function(){
var z=(Math.random()<0.5)?A.P:A.Q; 
$('#d').append(z);
});
bacchusbeale
la source
1

T-SQL, 337 327

Juste pour le plaisir, j'ai créé une autre solution en T-SQL, qui est un octet plus court que ma solution Java 8:

DECLARE @b char(33)='Under the spreading chestnut tree',@c char(5)='sold',@d char(4)='you',@e char(4)='and',@f char(9)='here lie',@ char='
',@h char(4)=' IS'IF rand()>.5PRINT @b+@+'I '+@c+@d+@e+@d+@c+'me.'+@+'T'+@f+'they, '+@e+@f+'we'+@+@b+'.'ELSE PRINT'WAR'+@h+'PEACE.'+@+'FREEDOM'+@h+'SLAVERY.'+@+'IGNORANCE'+@h+'STRENGTH.'

En déclarant le chars trop long, vous pouvez ajouter un espace «automatique», économisant quelques octets.

En utilisant le code dans l'édition proposée par l'utilisateur PenutReaper, vous pouvez en effet raser 10 octets.

CoolWilly
la source
L'utilisation d'une variable pour les retours chariot ne vaut pas la peine. Utilisez simplement ceux littéraux.
Muqo
1

Script Java (233)

Math.random()>0.5?(a="Under the spreading chestnut tree")+"\nI "+(s="sold")+(y=" you ")+(n="and")+y+s+" me.\nT"+(h="here ")+(l="lie ")+"they "+n+" "+h+l+"we\n"+a+".":["WAR","PEACE.\nFREEDOM","SLAVERY.\nIGNORANCE","STRENGTH."].join(" IS ")

A écrit cela sans regarder d'autres réponses. Fait bon usage des affectations comme expressions.

MegaTom
la source
0

05AB1E , 119 octets

“‚  spreading chestnutíÍ““Iïê€î€ƒ€îïê€á.““€Çº¤€»,€ƒ€Îº¤€¦“).ªĆ»‘‡î€ˆ PEACE.
FREEDOM€ˆÃÒRY.
IGNORANCE€ˆ STRENGTH‘)'.«Ω

Essayez-le en ligne!

Grimmy
la source
0

Python 3 , 222 octets

a,b,c,d,e,f='Under the spreading chestnut tree',' you ',' lie ','and','sold',' IS '
print({f'{a}\nI {e}{b}{d}{b}{e} me.\nThere{c}they, {d} here{c}we\n{a}.',f'WAR{f}PEACE.\nFREEDOM{f}SLAVERY.\nIGNORANCE{f}STRENGTH.'}.pop())

Essayez-le en ligne!

Jitse
la source
0

C (gcc) , 307 289 271 270 octets

-37 octets grâce au plafond

*y=" IS ";main(){int*r[]={"WAR",y,"PEACE.\nFREEDOM",y,"SLAVERY.\nIGNORANCE",y,"STRENGTH.",0,"Under the spreading chestnut tree","\nI"," sold ","you"," and ",r[11],r[10],"me.\n","T","here lie ","they,",r[12],r[17],"we\n",r[8],".",0},z=r;for(z=z/2&8;r[z];)printf(r[z++]);}

Essayez-le en ligne!

Girobuz
la source