Le nouveau supercalculateur de prévisions météorologiques est arrivé et ne fonctionne pas.
En attendant, votre patron veut que vous achetiez du temps aux techniciens en simulant les cartes de vent quotidiennes.
Votre tâche consiste à dessiner une grille de flèches représentant la direction du vent.
La grille est:
- composé de carreaux carrés 15px
- 8 tuiles par 8 tuiles
- 120px carré total
000 arrière-plan
Chaque tuile de grille a 8 orientations potentielles, représentant la direction du vent:
- Nord
- Nord-est
- est
- Sud-est
- Sud
- Sud-ouest
- Ouest
- Nord Ouest
Ce qui doit être décrit comme suit:
N NE E SE S SW W NW
Les cartes doivent varier progressivement pour être crédibles.
Cela signifie que chaque tuile ne peut différer de son voisin que d'une étape. Plus précisément:
- Une tuile ne peut différer que d'un incrément ou d'une décrémentation de chacune des 4 tuiles adjacentes. (ou 3 pour les carreaux latéraux, 2 pour les carreaux d'angle).
- Par exemple, une tuile avec le voisin E pourrait être NE, E ou SE (en supposant qu'elle s'accorde avec ses autres voisins).
- Les orientations peuvent rebondir, c'est-à-dire N -> NW et NW -> N.
Pour illustrer, la carte suivante est valide:
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
Les cartes doivent être uniques , ne générez pas la même carte pour différentes entrées.
- L'entrée est un entier correspondant aux jours entre maintenant et vos prévisions (par exemple 1 est la prévision de demain, 365 est le temps d'un an).
- La sortie est la carte sous forme d'image.
- La sortie doit être reproductible, la même entrée donnera toujours la même sortie
- Vous devez donner des cartes uniques pendant au moins 8 ans - c'est-à-dire aucune sortie identique pour toute entrée entre 1 et 2920 (j'ignore les années bissextiles).
- Il n'y a pas de sortie définie pour une entrée supérieure à 2920.
La soumission gagnante produira des cartes valides (jusqu'au jour 2920) avec le moins d'octets de code source.
Réponses:
BBC Basic, 83 caractères ASCII, taille de fichier à jetons 72
Téléchargez l'émulateur sur http://www.bbcbasic.co.uk/bbcwin/bbcwin.html
Il s'agit essentiellement d'un portage du concept de Martin, mais la mise en œuvre dans BBC basic est très différente. Je reprogramme la police pour les nombres
0
,1
puis affiche les chiffres binaires den
dans l'ordre inverse.Le code non golfé est ci-dessous. Dans BBC basic, vous pouvez imprimer des caractères ASCII individuels à l'aide de la
VDU
commande, mais le langage possède une série de codes spécifiques à la machine similaires aux séquences d'échappement mais commençant par des caractères non imprimables. Pour reprogrammer la police, nous commençons par ASCII 23. Normalement, des valeurs de 8 bits sont prises, mais si vous utilisez un point-virgule comme séparateur au lieu d'une virgule, cela prend des valeurs endian de 16 bits (comme dans la version golfée).Production
Pour les nombres 0 à 7. Notez que la police n'est pas réinitialisée à la fin du programme, donc les chiffres 0 et 1 apparaissent sous forme de flèches dans les deux premiers exemples.
la source
Matlab (182 *)
On suppose que l'entrée est stockée dans
n
. Quand on regarde l'algorithme, il n'est pas sûr que les résultats soient uniques, mais j'ai vérifién=1 upto 3000
qu'ils sont uniques et satisfont aux règles. J'utilise simplement des nombres complexes du cercle unitaire et je les "adoucit" par conv2 avec un filtre gaussien. Après cela, ils sont «arrondis» dans les 8 directions possibles.* Je ne sais pas comment redimensionner la sortie à un certain nombre de pixels, donc cela doit être fait manuellement = /
EDIT: Je viens de découvrir qu'il y a des cas où mon programme de vérification n'a pas reconnu les mauvaises solutions (changements de plus d'une étape), mais j'essaie de trouver une autre solution.
Contribution:
Code:
la source
Mathematica,
116115 octetsJe suppose qu'un bon cheval ne saute jamais plus haut qu'il ne doit. 2920 grilles différentes sont très facilement réalisables en utilisant seulement deux directions (j'utilise
N
etNE
), ce qui rend la règle de continuité triviale. Je choisis simplement entre N et NE en fonction des bits den
, donc cela produira réellement 2 64 cartes de vent différentes.Voici les dix premières cartes:
PS: Mon idée originale était d'énumérer les 8 4 combinaisons pour les 4 coins et d'interpoler "linéairement" le reste de la grille. Cela aurait probablement abouti à des cartes plus belles, mais c'est du golf de code après tout, alors je suis allé avec ce qui remplit les exigences minimales.
la source
PHP 5.4, 549 octets
Un peu gêné par la nécessité de définir des flèches comme graphiques, voici mon code PHP:
Prend son argument à partir de la ligne de commande, tel que:
Cette solution utilisera l'entrée comme définition des quatre coins. Le reste de la carte sera interpolé en douceur entre les valeurs. Il a défini des résultats pour toutes les valeurs de 0 à 4095, un grand total de ~ 11,25 ans de prévisions fausses, ce qui devrait être plus que suffisant pour réparer le logiciel météo!
Voici un GIF de tous les résultats:
Et un ZIP contenant chaque carte peut être téléchargé ici
(Petite remarque: mon domaine a récemment expiré parce que je n'y prêtais pas attention. Je l'ai renouvelé, mais l'image et le lien ci-dessus peuvent ne pas fonctionner jusqu'à ce que les mises à jour DNS)
Non certifié:
la source