Es ist wirklich einfach, einen Schatz zu finden, der von Piraten versteckt wird. Alles was Sie dafür brauchen, ist eine Karte. Es ist allgemein bekannt, dass Piraten Karten von Hand zeichnen und den Algorithmus beschreiben, um einen Ort auf folgende Weise zu finden: "Stelle dich neben eine einsame Palme, mache 30 Schritte in Richtung Wald, 15 in Richtung See, ..."
Eine Reise über eine solche Route ist in der Regel eine großartige Gelegenheit, die Landschaft zu sehen ... Heutzutage hat jedoch niemand Zeit dafür. Aus diesem Grund haben Schatzsucher Sie gebeten, ein Programm zu schreiben, mit dem Sie anhand einer bestimmten Karte die genaue Position eines Schatzes bestimmen können.
Eingang
Die Eingabe besteht aus mehreren Anweisungen <Direction> <Distance>
, die durch Kommas getrennt sind (gefolgt von jeweils einem Leerzeichen).
Die Richtung ist eine der folgenden:
N
- Norden, S
- Süden, E
- Osten, W
- Westen,
NE
- Nordosten, NW
- Nordwesten, SE
- Südosten, SW
- Südwesten.
Die Entfernung ist eine ganze Zahl (1 bis 1000).
Ausgabe
Das Ergebnis sind die Koordinaten, bei denen Sie nach Beendigung der Anweisungen mit drei Dezimalstellen, getrennt durch ein Komma und ein Leerzeichen, landen. Die Startposition hat Nullkoordinaten (0, 0).
Die erste Koordinate ist X (Ost bedeutet Koordinaten größer als Null, West bedeutet weniger als Null).
Die zweite Koordinate ist Y (Nord bedeutet mehr als Null, Süd bedeutet weniger als Null).
Beispiele
1. N 3, E 1, N 1, E 3, S 2, W 1
3.000, 2.000
2. NW 10
-7.071, 7.071
3. NE 42, NW 42, SE 42, SW 42
0.000, 0.000
Quelle (auf Ukrainisch). Das Eingabeformat ist dort anders.
-3.000, 2.000
.(print (word (form xcor 4 3) ",) (form ycor 4 3))
. Ich bin mir jedoch nicht sicher, wie einfach das Parsen der Eingabe sein würde.Antworten:
Ruby 1,9,
175171162153130120117quelle
?i.to_c
kann auf1.i
-4 Bytes gekürzt werden .Haskell (291)
quelle
C99 (319 Zeichen)
Eingabe in
stdin
, Testlauf bei ideone :)quelle
Python,
158154150 Zeichenquelle
D=dict(N=1j,E=1,S=-1j,W=-1)
[153] Zeile 2: wirdj
wirklich benötigt? [152] Zeilen 3-4: Wenn Sie zu Python 3 wechseln,raw_input
→input
und obwohl Sie danach Klammern verwenden müssenprint
, speichern Sie 2 Zeichen. [150].real
und.imag
funktionieren.imag
andreal
attrs ...JavaScript,
179164170168158156153 Zeichen(E|W)
durch(.)
d
n
anstelle einer neuen Variablen wiederverwendetd
153: Ich persönlich denke, diese Bearbeitung macht es zehnmal hässlicher, aber es sind drei Zeichen kürzer. Es basiert auf dem nicht standardmäßigen Verhalten, dass Sie RegExp-Objekte als Funktionen aufrufen können:
/./g('string')
ist dasselbe wie/./g.exec('string')
:for(p=prompt(X=Y=0),R=/(N|S)?(.)? (\d+)/g;[,y,x,n]=R(p)||0;X+=x?x<'W'?n:-n:0)n/=x&&y?Math.SQRT2:1,Y+=y?y<'S'?n:-n:0;alert(X.toFixed(3)+', '+Y.toFixed(3))
quelle
Haskell, 199 Zeichen
quelle
Scala (
367, 332)quelle
Java
(459) (445) (402) (382) (363)(352)stdin eingang
quelle
PowerShell, 178
Hierdurch können möglicherweise bis zu 10 Zeichen verloren gehen, wenn die Genauigkeit auf √2 / 2 verringert wird.
quelle
C (GCC) ,
155152 Bytes-3 Bytes dank ceilingcat
Probieren Sie es online!
quelle
Groovy (215)
Liest Eingaben als Programmargumente. Beispiel:
quelle
Perl 5
-n
, 122 BytesProbieren Sie es online!
quelle
J 93 Bytes
Probieren Sie es online!
quelle