Der neue Supercomputer mit Wettervorhersage ist da und funktioniert nicht.
In der Zwischenzeit möchte Ihr Chef, dass Sie den Technikern etwas Zeit verschaffen, indem Sie die täglichen Windkarten fälschen.
Ihre Aufgabe ist es, ein Pfeilgitter zu zeichnen, das die Windrichtung darstellt.
Das Raster ist:
- Bestehend aus 15px quadratischen Kacheln
- 8 Fliesen von 8 Fliesen
- Insgesamt 120 Pixel pro Quadrat
000 Hintergrund
Jedes Gitter hat 8 mögliche Ausrichtungen, die die Windrichtung darstellen:
- Norden
- Nordost
- Osten
- Süd-Ost
- Süd
- Südwesten
- Westen
- Nordwest
Was muss wie folgt dargestellt werden:
N NE E SE S SW W NW
Die Karten müssen allmählich variieren , um glaubwürdig zu sein.
Das heißt, jedes Plättchen darf sich nur um einen Schritt vom Nachbarn unterscheiden. Speziell:
- Ein Plättchen kann sich nur um ein Inkrement oder Dekrement von jedem der 4 benachbarten Plättchen unterscheiden. (oder 3 für Seitenfliesen, 2 für Eckfliesen).
- ZB könnte ein Plättchen mit dem Nachbarn E NE, E oder SE sein (vorausgesetzt, es stimmt mit seinen anderen Nachbarn überein).
- Orientierungen können zurücklaufen, dh N -> NW und NW -> N.
Zur Veranschaulichung ist die folgende Karte gültig:
NW N NE NE NE NE NE NE
N NE NE NE NE NE NE E
NE NE NE NE NE NE E SE
E NE NE NE NE E SE S
SE E E E E SE S SE
S SE SE SE SE S SE E
SW S S S S SE E NE
SW SW S S SE E NE N
Maps müssen eindeutig sein . Generieren Sie nicht dieselbe Map für verschiedene Eingaben.
- Die Eingabe ist eine Ganzzahl, die den Tagen zwischen jetzt und Ihrer Prognose entspricht (z. B. 1 ist die Prognose von morgen, 365 ist die Jahreszeit).
- Ausgabe ist die Karte als Bild.
- Die Ausgabe sollte reproduzierbar sein. Dieselbe Eingabe ergibt immer dieselbe Ausgabe
- Sie müssen eindeutige Zuordnungen für mindestens 8 Jahre angeben - dh für Eingaben zwischen 1 und 2920 ist keine identische Ausgabe möglich (Schaltjahre werden ignoriert).
- Es gibt keine definierte Ausgabe für Eingaben, die größer als 2920 sind.
Die Gewinner-Einsendung wird gültige Maps (bis Tag 2920) mit den wenigsten Bytes Quellcode erstellen.
Antworten:
BBC Basic, 83 ASCII-Zeichen, tokenisierte Dateigröße 72
Laden Sie den Emulator unter http://www.bbcbasic.co.uk/bbcwin/bbcwin.html herunter
Dies ist im Grunde eine Portierung von Martins Konzept, aber die Implementierung in BBC basic ist sehr unterschiedlich. Ich programmiere die Schriftart für die Zahlen um
0
und1
gebe dann die Binärziffernn
in umgekehrter Reihenfolge aus.Ungolfed Code ist unten. In BBC Basic können Sie einzelne ASCII-Zeichen mit dem
VDU
Befehl drucken. Die Sprache verfügt jedoch über eine Reihe maschinenspezifischer Codes, die den Escape-Sequenzen ähneln, jedoch mit nicht druckbaren Zeichen beginnen. Für die Neuprogrammierung der Schriftart beginnen wir mit ASCII 23. Normalerweise werden 8-Bit-Werte verwendet. Wenn Sie jedoch ein Semikolon als Trennzeichen anstelle eines Kommas verwenden, werden 16-Bit-Little-Endian-Werte benötigt (wie in der Golf-Version verwendet).Ausgabe
Für die Nummern 0 bis 7. Beachten Sie, dass die Schriftart am Ende des Programms nicht zurückgesetzt wird. Daher erscheinen die Nummern 0 und 1 in den ersten beiden Beispielen als Pfeile.
quelle
Matlab (182 *)
Es wird angenommen, dass die Eingabe in gespeichert ist
n
. Beim Betrachten des Algorithmus ist nicht sicher, ob die Ergebnisse eindeutig sind, aber ich habe überprüft,n=1 upto 3000
ob sie eindeutig sind und den Regeln entsprechen. Ich benutze im Grunde genommen nur komplexe Zahlen des Einheitskreises und 'glätt' sie durch conv2 mit einem Gauß-Filter. Danach werden sie in die 8 möglichen Richtungen "gerundet".* Ich weiß nicht, wie ich die Ausgabe auf eine bestimmte Anzahl von Pixeln skalieren soll, das muss also manuell gemacht werden = /
BEARBEITEN: Ich habe gerade festgestellt, dass mein Überprüfungsprogramm in einigen Fällen falsche Lösungen nicht erkannt hat (Änderungen um mehr als einen Schritt), aber ich versuche, eine andere Lösung zu finden.
Eingang:
Code:
quelle
Mathematica,
116115 BytesIch nehme an, ein gutes Pferd springt nie höher als es muss. 2920 verschiedene Gitter werden sehr einfach mit nur zwei Richtungen (ich benutze
N
undNE
) erreicht, was das Erfüllen der Kontinuitätsregel trivial macht. Ich wähle einfach zwischen N und NE basierend auf den Bits vonn
, so dass tatsächlich 2 64 verschiedene Windkarten erzeugt werden.Hier sind die ersten zehn Karten:
PS: Meine ursprüngliche Idee war es, alle 8 4 Kombinationen für die 4 Ecken aufzulisten und den Rest des Gitters "linear" zu interpolieren. Das hätte wahrscheinlich zu schöneren Karten geführt, aber das ist doch Codegolf, also habe ich mich für das entschieden, was die Mindestanforderungen erfüllt.
quelle
PHP 5.4, 549 Bytes
Etwas behindert durch die Notwendigkeit, Pfeile als Grafiken zu definieren, ist hier mein PHP-Code:
Übernimmt sein Argument von der Kommandozeile, wie zum Beispiel:
Diese Lösung verwendet die Eingabe als Definition der vier Ecken. Der Rest der Karte wird reibungslos zwischen den Werten interpoliert. Es wurden Ergebnisse für alle Werte von 0 bis 4095 definiert, eine Gesamtsumme von ~ 11,25 Jahren gefälschter Vorhersage, was mehr als genug Zeit sein sollte, um die Wettersoftware zu reparieren!
Hier ist eine GIF aller Ergebnisse:
Eine ZIP-Datei mit jeder Karte kann hier heruntergeladen werden
(Kleiner Hinweis: Meine Domain ist kürzlich abgelaufen, weil ich nicht darauf geachtet habe. Ich habe sie erneuert, aber das obige Bild und der obige Link funktionieren möglicherweise nicht, bis die DNS-Updates durchgeführt wurden.)
Unquishified:
quelle