Jungen und Mädchen freuen sich, Fifty Shades of Grey auf der Leinwand zu sehen. Wir wollen einfach nur Code schreiben, ohne uns darum zu kümmern.
Sie müssen:
- Drucken Sie auf dem Bildschirm fünfzig Quadrate, die jeweils mit einem anderen Grauton gefüllt sind
- Wenn Ihre bevorzugte Sprache keine Bildverarbeitungsfunktionen bietet , können Sie eine Bilddatei ausgeben
- Quadrate müssen sichtbar sein, mindestens 20 x 20 Pixel
- Sie können keine Zufallszahlen verwenden, es sei denn, Sie stellen sicher, dass jeder Farbton einzigartig ist.
- Sie können über kein Netzwerk eine Verbindung zu einem Dienst herstellen
- Sie können keine Dateien in Ihrem Programm lesen.
- Sie können keine Bibliotheken aus den Standardbibliotheken Ihrer Wahl verwenden.
Dies ist Codegolf, also gewinnt der kürzeste Code.
code-golf
graphical-output
jsedano
quelle
quelle
Antworten:
MATLAB, 24 Bytes
Zweiter Versuch, nun tatsächlich regelkonform.
Das 'I' steht für 'InitialMagnification', aber anscheinend wird Matlab Namen in Name / Wert-Paaren automatisch vervollständigen. Klar ist ein guter Golftick!
quelle
Mathematica, 30 Bytes
Hier ist ein weiterer Mathematica-Ansatz:
oder
Der erste erstellt einfach ein Array
und der zweite
Dann
ArrayPlot
zeichnet sie als Gitter und wird standardmäßig verwendet , Graustufen , die Werte zu visualisieren.quelle
ArrayPlot
.ArrayPlot@{Range@50}
, das sind nur 20 Bytes.CJam - 23 (keine aktuelle grafische Ausgabe)
Da CJam (noch?) Nicht auf dem Bildschirm zeichnen kann, habe ich ein Programm geschrieben, das ein Bild im normalen PGM- Format ausgibt .
Speichern Sie die Ausgabe in einer Datei mit dem Namen 50.pgm und öffnen Sie sie mit einem Bildbetrachter / -editor.
Probieren Sie es online aus
Das Ergebnis sieht so aus:
Erläuterung:
quelle
No line should be longer than 70 characters.
Mathematica
72 61 59 43 3534 BytesAktuelle Version (34 Bytes)
Frühere Version (59 Bytes), danke an Martin Büttner.
Blaue Ränder wurden hinzugefügt, um die Position der Quadrate hervorzuheben.
Anzahl der Quadrate:
Erster Versuch (72 Bytes)
Wenn sich die Quadrate überlappen können. Wie Zgarb bemerkt, gibt es eine entfernte Möglichkeit, dass ein Feld ein anderes verdeckt.
quelle
Salbei -
26243529 ZeichenEs sieht aus wie das:
Bisherige Versuche : Erst hatte ich
Matrix([range(50)]).plot()
dannmatrix_plot([range(50)])
. Diese sahen so aus:Benutzer @flawr wies darauf hin, dass die mit den Standardeinstellungen erstellten Quadrate zu klein sind. Das Hinzufügen von
figsize
Optionen behebt das Problem, aber es ist 6 Zeichen länger als die 5x10-Version oben in dieser Antwort:quelle
R,
47 42 39 38 37 3635 BytesVorausgesetzt, sie dürfen sich überlappen, funktioniert dies.
Symbols
erfordert einen Vektor, der die Größe für jedes Quadrat enthält, und ich spare Platz, indem ich denselben Vektor für alle Funktionsparameter wieder verwende. Das größte Quadrat ist immer 1 Zoll breit. Mit 50:99 als ganzzahligem Bereich ist das kleinste Quadrat etwa einen halben Zoll breit, also 36 Pixel bei 72 dpi.Vielen Dank an alle für die Kommentare und Vorschläge, ich bin ziemlich neu in R, das ist also alles sehr lehrreich.
Vorherige Versionen:
Vorheriges Bild:
quelle
symbols(x<-50:99,sq=x,bg=gray(x/99))
f = function (a, b) { a; b}
und dann anrufenf(x <- 5, x)
. Das funktioniert wie erwartet. Sobald Sie die Argumente inf
der Definition (undrm(x)
) umkehren , funktioniert es nicht mehr.symbols(x,,,x<-50:99,bg=gray(x/99))
Java - 180
Ziemlich einfach, nur Kisten zeichnen.
Mit Zeilenumbrüchen:
quelle
int i;
statt verwendenint i=1
aber dann++i
beim ersten Gebrauchi
statti++
beim letzten mal 2 Bytes einsparen. Übrigens: Ich wusste gar nicht, dass man ein Java-Programm ohne machen kannclass MyClass ... public static void main(...
!!!BBC BASIC, 57
Die Quadrate müssen mindestens 20 Pixel groß sein, aber es gibt nichts zu sagen, dass sie die gleiche Größe haben müssen.
Es kann möglich sein, dies durch Verwendung niedrigerer VDU-Codes zu verkürzen. Ein Wechsel von diesem Muster zu einem weniger interessanten wird es jedoch wahrscheinlich nicht kürzer machen.
quelle
F.n=51TO2S.-1V.19;-1,n,n,n:RECTANGLEFILL0,0,n*20N.
Ipython 2, 54 Bytes
Das Beste, was ich tun konnte, war mit einem Ipython-Programm. Wenn Sie ipython mit starten
ipython -pylab
und dieses Programm ausführen, wird eine Grafik mit 50 Graustufen in 50 Quadraten angezeigt :Ausgabe:
Lösung 2:
Hier ist ein anderes Programm (61 Bytes):
Daraufhin wird das folgende Fenster angezeigt:
quelle
JavaScript (
72,70, 67 Byte)72: original (die geschickte
■
Verwendung von Sphinxxx's Antwort entlehnt ):70: Schamlos von Ismael Miguel (der die Stimmen verdient hat) stehlen , einer kürzeren for-Schleife, und dem Browser erlauben, das Fehlen von # zu korrigieren, indem er den Farbcode einhält ...
67 Bytes (65 Zeichen): Vertauschen der Entität gegen das Unicode-Zeichen:
quelle
i=51
. Wenn ich richtig gezählt habe, gibt es nur 49 Felder?for(i=0;i++<50;)document.write('<font color=#'+i+i+i+' size=7>■')
oder ähnlich reduzieren . Ungetestet, aber es könnte funktionieren!#
Zeichen, um eine 70 Byte lange Lösung zu erhalten.for(i=90;i;)document.write('<font color=#'+i+i+i--+' size=7>■')
- ABER zumindest in den Standardeinstellungen meines Browsers (OSX / Chrome) ist die Box etwas kleiner als 20x20 Pixel sowieso, so dass diese ■ basierten Lösungen fraglich sind.C ++,
9883 ZeichenOkay, Sie benötigen einen Terminal-Emulator, der True Colors unterstützt. Für Mac OS gibt es zum Beispiel die nächtlichen Builds von iTerm2. Für Unix glaube ich, dass Konsole es unterstützt. Hier ist eine Liste für alle Fälle: https://gist.github.com/XVilka/8346728#now-supporting-truecolor
Kompiliere mit g ++ (\ e ist compilerabhängig).
Damit die Quadrate genügend Fläche haben, müssen Sie die Schriftgröße des Terminals ändern.
Die Verwendung von C-Bibliotheken anstelle von C ++ ermöglicht das Rasieren einiger Zeichen.
C,
6158 ZeichenDies ist dasselbe Programm, jedoch in C, das nicht typisierte Funktionsdeklarationen als Rückgabewert für int annimmt und für einige der Standardbibliotheksfunktionen, wie in diesem Fall printf, keine Includes benötigt. Vorgeschlagen von @cartographer. Drei Zeichen weniger dank @ user3601420
Kompiliert mit einigen Warnungen (für die Annahme, dass der Rückgabetyp von main int ist und implizit die Deklaration von printf enthält).
quelle
int
vor main löschen und es mit nur ein paar Warnungen mit gcc kompilieren lassen.i
das erste Argument an main stellen, wie in:main(i){for(i=51;i--;)printf(...
\e
→\33
Python 2,
125115104 BytesBeispielausgabe:
Gute alte Schildkröte. Dies war die einzige mir in Python vorstellbare Methode, mit der Bilder nur mit den Standardbibliotheken auf einem Bildschirm gedruckt werden.
Die quadratische Schildkrötenform ist zufällig 21 mal 21, was sehr praktisch ist. Dies kann man sehen, indem man durchgräbt
turtle.py
:Wenn Sie einen hochauflösenden Monitor haben oder nicht möchten, dass ein paar Quadrate außerhalb des Bildschirms angezeigt werden, sind dies 93 Byte:
Demo
(Diese Demo verwendet Skulpt, indem sie das hier gefundene Snippet anpasst . Es ist nur enthalten, um eine Vorstellung davon zu geben, was der Code tut - ich musste ein paar Bits modifizieren, damit es funktioniert.)
Code-Snippet anzeigen
quelle
J (
434140383329 Zeichen)Nach Vorschlägen von randomra .
Diese Lösung zeigt nichts an, da die Standardbibliothek von J keine GUI-Routinen enthält. Stattdessen erstelle ich ein Bild und schreibe es in die Standardausgabe. Die Ausgabe erfolgt zufällig, es wird sichergestellt, dass alle Schattierungen unterschiedlich sind. Hier ist ein Beispiel für die Ausgabe und das in PNG konvertierte und um 90 ° gedrehte Bild zur einfacheren Anzeige:
quelle
50
aus dem Header in den erzeugten Teil unter Verwendung von 50 * 50 Quadraten spart 1 Byte:1!:2&4'P2 50 2500 ',":(,*:#i.)50
.1!:2&4'P2 ',":(,*:,],*:#i.)50
für 29 Zeichen! BTWplot
ist nicht Teil der Standard-J-Bibliothek?plot
ist eines der Hilfspakete, die Sie vom Paketmanager herunterladen können. Ich würde es kaum als Teil der Standardbibliothek sehen .Excel vba, 81
Im unmittelbaren Fenster:
auf dem aktiven Blatt:
{81 Shades sind genauso viel Code wie 50}
quelle
cells(i,j)
dui>0
undj>0
.For i=1 To 50:Cells(i,1).Interior.Color=RGB(i*5,i*5,i*5):Next
R ,
3732 Zeichen 1 :Die Anzeige dafür sieht jedoch so aus… meh (Bild um 90 ° gedreht, um besser in den Text zu passen; komprimiert, ursprüngliche quadratische Seitenlänge> 20px):
Hier ist eine schönere Version, die die Quadrate in zufälliger Reihenfolge in einer Matrix (50 Zeichen) darstellt:
(Und ja, die drei benachbarten Quadrate mit scheinbar identischen Farben sind tatsächlich drei verschiedene Graustufen.)
1 Ja, eine andere R-Antwort,
und nicht einmal die kürzeste(jetzt die kürzeste für R) - Entschuldigung. Mir hat ein hübsches Rendering in R gefehlt .quelle
image(matrix(1:50,5),c=gray(1:50/51))
Matlab 35 dank sanchises
Matlab 36
Zeigt 50 Quadrate mit den Grauwerten 1 bis 50 und 2 zusätzliche Rechtecke mit den Grauwerten 0 und 51 an:
Matlab, 45
quelle
JavaScript, 87 bis
90BytesDadurch werden Quadrate in HTML ausgegeben, da dies die einzige grafische Ausgabemethode von JavaScript ist. Danke an edc65 für das Abschneiden von 3 Bytes.
quelle
for(i=90;i>40;)document.write('<p style=background:#'+i+i+i--+';height:9ex;width:9ex>')
. Einzelne Ziffern können nicht verwendet werden, da Grautöne nicht eindeutig wären (# 111 dieselbe Farbe wie # 111111)1cm
oder 19mm
wäre besser und breiter unterstützt. Ohne die Anzahl der Bytes zu ändern.PHP,
968874 BytesDanke an Ismael Miguel für das Speichern von 22 Bytes!
Schreibt 50
<p>
s mit 9 mm Höhe und Breite (die auf den meisten Bildschirmen größer als 20 Pixel sein sollten), mit geringfügigen Farbunterschieden.Generiertes Ergebnis (das Bild wird herausgezoomt und um 90 ° gedreht):
quelle
Matlab - 33 Bytes
Trotz der ausführlichen Befehle ist das Ergebnis immer noch recht kompakt. Es sieht ein bisschen besser , wenn Sie ersetzen
surf
mit ,surface
aber das kostet 3 Zeichen.Wenn Sie das 50. graue Quadrat nicht bemerken, ist es etwas größer als die anderen!
quelle
ndgrid
! (2 Bytes weniger). Und ist jedes Quadrat ein anderes Grau?Javascript (
7771 Bytes):Diese Antwort basiert nicht mehr auf IE11. Es funktioniert, weil der Browser die falschen Farbcodes in verwendbare umwandelt (indem
#
er die Zahl hinzufügt ).Hier ist der Code:
Firefox hat immer noch die Eigenheit, Kreise zu machen.
(Kleine Änderung: Geändert
for(i=61;i-->9;)
in,for(i=59;i-->9;)
weil 52 Quadrate erzeugt wurden.)Alte Antwort:
Dies basiert auf meiner PHP-Antwort und verwendet fast die gleichen Methoden, um die Quadrate zu erstellen:
Nicht die kürzeste Antwort, aber es lohnt sich, sie hier hinzuzufügen.
Diese Lösung ist nicht kompatibel mit Chrome (erzeugt mehrere grüne Farben) und Firefox (das gleiche Ergebnis, erzeugt aber Kreise? OO WTH?)
Da dies Code-Golf ist, ist eine Lösung, die mit einer bestimmten Version oder einer bestimmten Software arbeitet, akzeptabel.
quelle
<hr>
, wahrscheinlich um das Erscheinungsbild zu verbessern. Keine Ahnung, was mit den Farben passiert. Wie auch immer, ich habe meine +1 für die Verwirrung.Piet-2 * 103 = 206
Dies ist insofern einzigartig, als der Quellcode und die Ausgabe die Herausforderung erfüllen:
Das meiste davon ist dekorativ, also habe ich nur die beiden oberen Reihen gezählt, die für sich alleine stehen. Gibt wie andere Graustufen-ppm aus.
quelle
JavaScript - 70 Bytes
quelle
font:3em a
oder verwendenfont-size:3em
. Ich stimme wegen der Größe der Kisten ab. Bis du reparierst.i--
anstelle von verwendeni-=1
.<b>
Tag verwenden. Der Code wird in keiner Weise geändert, es sei denn, der Text ist schwarz. Dies ist keine Voraussetzung, aber es könnte eine gute Idee sein.Verarbeitung, 66 Zeichen:
quelle
PHP (
62606372716259 Bytes):Ich habe den kürzesten gemacht, den ich finden konnte:
Dies ist genau derselbe Code wie meine Javascript-Antwort (mit 71 Bytes) .
Aber so viel kürzer!
Dies hat eine Besonderheit in Firefox: Anstelle von Quadraten macht Firefox Kreise ! (Go Wahnsinn!)
Andernfalls produzieren alle Browser die richtige Farbe (auch wenn
#
dascolor
Attribut fehlt ).Ungültige Einreichungen und Änderungsprotokoll :
Alte Antwort mit 62 Bytes.
Alle Farben sind perfekt aufeinander abgestimmt.
Diese Lösung funktioniert nicht für Chrome (erzeugt Quadrate mit mehreren Farben) und Firefox (wodurch Kreise oO werden Ja, Kreise mit
<hr>
! Das horizontale Lineal ist in Firefox ein Kreis!).Sie können es auf IE11 testen und es sollte in Ordnung sein.
(einfach von oben entfernen)
Mir ist etwas Schreckliches aufgefallen: Es wurde
#111
statt#010101
für einige Farben ausgegeben .Dies bedeutete, dass sich einige Farben wiederholten.
Deshalb musste ich ein paar Bytes opfern:
Gibt die 50 Farben in perfekter Reihenfolge aus, von heller bis dunkler.
Aufgrund eines korrekten Punktes von @ edc65 musste ich hinzufügen
width=20
, um perfekte Quadrate zu erzeugen .Reduziert ein weiteres Byte durch Ersetzen
f!=$c
durchf>$c
, was perfekt funktioniert.Endfassung, ohne
width=20
:Dies ist ungültig, da Quadrate ausgegeben werden müssen.
Dies gibt die Schatten von heller nach dunkler aus.
Reduziert 1 Byte durch Umschalten auf eine
while
Schleife wie folgt:Erste Lösung:
Dies hat nicht die Farben ordentlich bestellt, aber es gibt 50 verschiedene.
Es gibt nichts, was besagt, dass sie bestellt werden müssen, aber es gibt eine Anforderung an die Größe.
Ich hoffe, ich kann es viel mehr reduzieren.
Sie können es unter http://writecodeonline.com/php/ testen (klicken Sie auf "Als HTML anzeigen").
quelle
CSS (87 Zeichen)
Verwendet Animation;)
Die ausführbare Version ist länger, da Webkit weiterhin das Herstellerpräfix benötigt. :(
Wenn wir ein zufälliges, leeres
<a>
Element zulassen , können wir es auf nur 72 Zeichen reduzieren:Sehen? CSS ist eine legitime Programmiersprache!
quelle
R, 36 Bytes
Ich kann die Antwort von freekvd trivial verkürzen.
(Sorry, dass ich unter seiner Lösung keinen Kommentar abgegeben habe. Stackexchange erlaubt mir noch keine Kommentare abzugeben, abzustimmen usw.).
quelle
PostScript, 34 Bytes
In der ISO-Latin-1-Codierung:
Dies ist das binäre Äquivalent zu:
(Dies setzt voraus, dass Sie es auf einem Gerät verwenden, das mindestens 1000 Punkte [= 10 Zoll = 25,4 cm] breit ist.)
quelle
0f 4e 75 a3 ...
.DrRacket - 83
Nur um DrRacket 1 Jahr nach "Introduction to Systematic Program Design" zu starten.
EDIT :
quelle
2htdp/image
zuhtdp/image
, und ändern Sie die Zeichenfolge"solid"
in das Symbol'solid
. Für größere Einsparungen ändern Sie den Wert(range 9 209 4)
auf(range 50)
: Die Grautöne müssen nur deutlich sein, was für das menschliche Auge nicht leicht zu erkennen ist!for/set
:(require htdp/image)(for/set([i 50])(rectangle 50 50'solid(make-color i i i)))
C # - 173
LINQPAD verwenden
Erweitert :
Ausgabe :
quelle
for(int i=0;i<250;i+=5)
und dannFromArgb(i,i,i)
undRectangle(i*4,0,20,20)
gibt 168FillRectangle()
hat eine Überladung, die die Rechteckkoordinaten direkt übernimmt, so dass Sie die entfernennew Rectangle()
und mit 153 davonkommen könnenJavaScript, 152 Byte.
Okay, vielleicht ist das nicht die beste Lösung, aber hier ist meine.
Hier ist die Ausgabe mit css float links (nur damit es einfacher ist, die Quadrate zu zählen) und ohne:
quelle
var
Schlüsselwörter löschen und unnötige Leerzeichen entfernen. Bitte geben Sie in Ihrer Antwort auch den Namen der Sprache und die Anzahl der Bytes an.var
Schlüsselwörter meinen .c+=5
anstelle vonc=c+5
. Sie können auch 2 Zeichen sparen, indem Sien=c.toString()
am Ende der vorherigen Zeile und dann diese Zeile am Ende der vorherigen Zeile erneut einfügen. Also wäre deine 2. Zeilefunction w(){if(c<250){n=c.toString()
px
für die Höhe und Breite weglassen können .