Introduction:
Jetons un coup d'œil à une calculatrice standard dans Windows:
pour ce défi, nous ne regarderons que les boutons suivants et ignorerons tout le reste:
7 8 9 /
4 5 6 *
1 2 3 -
0 0 . +
Défi:
Entrée:
vous recevrez deux entrées:
- L'un est quelque chose pour indiquer la rotation par incréments de 90 degrés
- L'autre est une liste de coordonnées représentant les boutons appuyés sur la calculatrice pivotée.
Sur la base de la première entrée, nous faisons pivoter la disposition mentionnée ci-dessus dans le sens horaire par incréments de 90 degrés. Donc, si l'entrée est 0 degrees
, elle reste telle quelle; mais si l'entrée est 270 degrees
, elle sera tournée trois fois dans le sens horaire (ou une fois dans le sens antihoraire). Voici les quatre dispositions possibles:
Default / 0 degrees:
7 8 9 /
4 5 6 *
1 2 3 -
0 0 . +
90 degrees clockwise:
0 1 4 7
0 2 5 8
. 3 6 9
+ - * /
180 degrees:
+ . 0 0
- 3 2 1
* 6 5 4
/ 9 8 7
270 degrees clockwise / 90 degrees counterclockwise:
/ * - +
9 6 3 .
8 5 2 0
7 4 1 0
La deuxième entrée est une liste de coordonnées dans n'importe quel format raisonnable † . Par exemple (tableau entier 2D à 0 index):
[[1,2],[2,3],[0,3],[1,0],[1,1]]
Sortie:
Nous sortons à la fois la somme, ainsi que le résultat (et un signe égal =
).
Exemple:
Donc si l'entrée est 270 degrees
et [[1,2],[2,3],[0,3],[1,0],[1,1]]
, la sortie deviendra:
517*6=3102
Règles du défi:
- † Les entrées peuvent être dans n'importe quel format raisonnable. La première entrée peut être
0-3
,1-4
,A-D
,0,90,180,270
, etc. La seconde entrée peut être un 0 indexé tableau 2D, 1 indexé tableau 2D, une chaîne, la liste des points d' objets, etc. Votre appel. Il est même possible d'échanger les coordonnées x et y par rapport aux exemples d'entrées donnés. Veuillez indiquer les formats d'entrée que vous avez utilisés dans votre réponse! - Vous êtes autorisé à ajouter des espaces (c'est-à-dire
517 * 6 = 3102
) si vous le souhaitez. - Vous êtes autorisé à ajouter des zéros de fin après la virgule, jusqu'à un maximum de trois (c'est
3102.0
-à- dire /3102.00
/3102.000
au lieu de3102
ou0.430
au lieu de0.43
). - Vous n'êtes pas autorisé à ajouter des parenthèses dans la sortie, ce
(((0.6+4)-0)/2)/4=0.575
n'est donc pas une sortie valide. - Vous êtes autorisé à utiliser d'autres symboles d'opérande pour votre langue. Alors
×
ou·
au lieu de*
; ou÷
au lieu de/
; etc. - Puisqu'une calculatrice calcule automatiquement lors de la saisie d'un opérande, vous devez ignorer la priorité de l'opérateur! Il
10+5*3
en résultera donc45
((10+5)*3=45
), pas25
(10+(5*3)=25
)
(c'est-à-dire10
→+
→5
→*
(il affiche maintenant 15 à l'écran) →3
→=
(il affiche maintenant la réponse45
)). Gardez cela à l'esprit lors de l'utilisationeval
et des fonctions similaires sur la somme résultante. - Il n'y aura pas de cas de test pour la division par 0.
- Il n'y aura aucun cas de test avec plus de trois chiffres décimaux comme résultat, donc pas besoin d'arrondir le résultat.
- Il n'y aura pas de cas de test où plusieurs opérandes se suivent ou où deux points se suivent.
- Il n'y aura pas de cas de test pour les nombres négatifs. Le signe moins (
-
) ne sera utilisé que comme opérande, pas comme négatif. - Il n'y aura pas de cas de test pour
.##
sans numéro de tête avant la virgule (c'est2+.7
-à- dire qu'il ne s'agira pas d'un cas de test valide, mais il2+0.7
pourrait l'être).
Règles générales:
- C'est le code-golf , donc la réponse la plus courte en octets l'emporte.
Ne laissez pas les langues de golf de code vous décourager de publier des réponses avec des langues autres que le golf de code. Essayez de trouver une réponse aussi courte que possible pour «n'importe quel» langage de programmation. - Des règles standard s'appliquent à votre réponse, vous êtes donc autorisé à utiliser STDIN / STDOUT, des fonctions / méthodes avec les paramètres appropriés, des programmes complets. Ton appel.
- Les failles par défaut sont interdites.
- Si possible, veuillez ajouter un lien avec un test pour votre code.
- Veuillez également ajouter une explication si nécessaire.
Cas de test:
Input: 270 degrees & [[1,2],[2,3],[0,3],[1,0],[1,1]]
Output: 517*6=3102
Input: 90 degrees & [[3,1],[0,0],[0,1],[3,3],[2,0],[0,3],[0,0],[0,2],[3,0],[2,1]]
Output: 800/4+0.75=200.75
Input: 0 degrees & [[0,0],[1,0],[2,0],[3,0],[1,2],[2,1],[2,2]]
Output: 789/263=3
Input: 180 degrees & [[3,0],[1,0],[1,2],[0,0],[3,2],[0,1],[2,0],[0,3],[2,1],[0,3],[3,2]]
Output: 0.6+4-0/2/4=0.575
1+-*/+-*/2
donne 0.5
sur la calculatrice Windows (10).
[1,3],
2+.7
?