Le monde est composé de cinq cellules sur cinq. Il s'enroule de tous les côtés. Il peut être visualisé comme ...
XXXXX XXXXX XXOXX XXXXX XXXXX
Vous êtes un O. Vous aimez voyager à travers le monde, et vous le faites selon les règles suivantes (que C soit le jour actuel):
- Les jours de grande écoute , vous vous sentez nostalgique. Retournez là où vous avez commencé hier.
- Les jours impairs , vous avez le mal du pays. Si possible, rapprochez-vous d'un pas horizontal de la maison et si possible d'un pas vertical. Ignorez l'emballage du monde dans le but de déterminer la proximité.
- Les jours pairs , vous vous sentez aventureux. Déplacez C / 2 marches vers le sud.
- Les jours carrés , vous vous sentez aventureux. Déplacez-vous vers le mur est.
- Sur Fibonacci jours, le monde se développe vers le sud par une ligne.
- Les jours triangulaires , le monde se développe vers l'est d'une colonne.
Si deux ou plusieurs des règles ci-dessus s'appliquent en même temps, appliquez-les dans l'ordre indiqué. Par exemple, un jour impair, revenez d'abord à l'endroit où vous avez commencé hier, puis rapprochez-vous de votre domicile.
Vous vivez au centre du monde (initial), c'est-à-dire la position (2,2), indexée zéro à partir du coin nord-ouest. Vous commencez votre voyage là-bas le premier jour.
Contribution
Un seul entier, N.
Sortie
Vos coordonnées X et Y le Nème jour, indexées zéro à partir du coin nord-ouest, séparées par un seul espace.
Cas de test avec explication
Étant donné une entrée de 3
, la sortie correcte est:
2 3
Nous pouvons résoudre ce problème un jour à la fois. À partir du jour 1, nous devons appliquer les mouvements suivants:
- Impair, carré, Fibonacci et triangulaire
- Prime, pair et Fibonacci
- Premier, impair, Fibonacci et triangulaire
Sous forme visuelle:
Jour 1 Jour 2 Jour 3 XXXXX XXXXXX XXXXXX XXXXXXX XXXXX XXXXXX XXXXXX XXXXXXX XXOXX -> XXXXOX -> XXXXXX -> XXXOXXX XXXXX XXXXXX XXOXXX XXXXXXX XXXXX XXXXXX XXXXXX XXXXXXX XXXXXX XXXXXX XXXXXXX XXXXXX XXXXXXX XXXXXXX
Cas de test supplémentaires
Avec l' aimable autorisation de Martin Büttner de solution de référence (s'il vous plaît noter que vous devez sortie une seule coordonnée, pas tous):
Input: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
Output: 4 2 2 3 3 2 6 4 2 2 2 5 2 2 2 6 7 5 7 0 6 4 6 0 5 3 5 10 4 9 9 6 3 8 3 6 2 7 2 6 2 5 2 4 2 4
C'est le golf de code. La soumission la plus courte gagne.
Réponses:
Pyth,
157156153 octetsVous pouvez l'essayer ici.
C'était un problème amusant pour le golf! Je m'habitue toujours à Pyth, mais c'est un très bon langage.
la source
,
- c'est pour ça qu'il est là.(G%+H/N2b)
,(GH)
,(tZH)
.Haskell, 394 octets
Il peut certainement être optimisé et également après avoir rapidement vérifié l'exactitude
on dirait que j'obtiens des résultats différents de celui affiché. Je reviendrai et vérifierai plus en profondeur mon code quand j'aurai plus de temps ^^Bon problème d'ailleurs!
EDIT: édité ma solution en tenant compte des précieux conseils donnés par Zgarb . Cela fonctionne maintenant parfaitement!
EDIT2: grâce à nimi, j'ai rendu le code encore plus petit. Je fais maintenant aussi les vérifications de pair et impair dans une fonction au lieu de deux, ce qui diminue globalement le nombre de 446 à 414 octets.
EDIT3: encore amélioré de 414 à 400 octets. Merci nimi pour encore 2 octets, tu es en feu! :)
EDIT4: 4 octets de plus par nimi :)
la source
0<1
est plus court queotherwise
, et0/=mod x y
peut être raccourci0<mod x y
. Aussi,1==mod(d)2
estodd d
et0==mod(d)2
esteven d
.0<1
au lieu de çaotherwise
?t
), carelem d[1..div(d*d-d)2]
c'est vrai pour tousd > 2
.otherwise
est juste un autre nom pourTrue
.C,
425396 octetsIl y a des parties à cela qui pourraient être améliorées, mais cela fonctionne pour les cas de test .
Explication
la source
Perl 5, 284 octets
283 octets, plus 1 pour l'
-E
indicateur au lieu de-e
Même code mais avec plus d'espace, plus de parenthèses et des noms de variables plus longs:
Je suis convaincu que cela peut être approfondi.
la source
Javascript,
361359 octetsLe code utilise l' affectation Destructuration . Il n'est actuellement pris en charge que par Firefox et Safari.
Explication
la source