ライトはいくつ点灯していますか?


40

あなたはデカルト平面上で小さな斑点です。あなたの存在を熟考して、あなたは飛行機の周りを歩き回り、物事に触れることにします。訪問するすべての座標ペアにライトスイッチがあることに気づきます。自分を楽しませるには、出くわすすべてのスイッチを切り替えることにします。

チャレンジ:文字のみを使用して、ランダムな長さの入力を取得するプログラムを作成しv^<、と>。これらのキャラクターは動きに対応しています。

  • < ユニットを1つ左に移動します
  • ^ 1ユニット上に移動します
  • > ユニットを1つ右に移動します
  • v 1ユニット下に移動します

このランダムに生成された入力を使用ONして、(0,0)で開始し、すべてのライトがOFF状態で始まり、最初に移動するまでライトをオンにしないと仮定して、位置に残るスイッチの数を計算します。(つまり、(0,0)から開始し、1ユニット上から(0,1)に移動すると、1つのライトが点灯します)。そのON位置にあるスイッチに出くわすと、スイッチが回されOFFます。

テストケース:

v>v<^^<v<<^<^><<>^^>>><v>vv^v>v^><><<^>><<<vvv^vvv>v>>v><vv^^<<>vv^^>v^<>>^^<^^>^^v<^>^<vvv^v^v><^<<v<<>><<>v>>^><^>^^<>>>>vv>^<<^<<><vvv<v^>>vvv>v^>>><<v^>^^^^v>>^>^v>v<vv^<>^<<v>vv>><^^<^><vv^^v<v<v^^^>v<^vv^v<><vv^^^>v^>v>vv<<^><v<^v><<v^^v>>v<vv<><^^^v<^v><><<^^<>^>><^^^>vv^<>>>>^<^<<<<>>>v<<v<v<vv><<vv<vv<^v^^^>>vv<>v>><<<v^>vv><v<<<v<<>^vvv^<v^v>^^v^v><<v^>>>v<v<v^>>>v><>>>^<><<<<>vv>v><v>v><^v<>v>>>vv<<>^>^>v<^><^<^vv^><^^>v<^^v>v^v<^^^^vv<>v<>><v^^><>v<<<>v^<v^^><>^<>^<>><>^^<>^v><>>><v<^^>>v>^^^<v

125個のライトが点灯します。

>>><^>>>^vv><^^v^<<<>>^<>>^<^>^<<^^v^<v^>>^<<><<>^v<^^^vv>v><^>>^<^<v><^v<^<<^^v><>>^v<^>^v<vvv<<<v^vv>>^vv>^^<>>vv>^<^>vv<>v^<^v<^^<v^^^<<^><><>^v>vvv<^vvv<vv><vv<^^v^^<^^>>><<<>^<>>><^<<<>><>^v><^^vv<>>><^^^<^>>>>v<v^><<>v<v<v^<<^><v^^><>v>^<>^^^vvv<v^>^^^^v>v<v>>>v^^<v<vv>><<>^vv><<vv<<>^^v>>v<^^v>><v<v<<>^^vv>>^v>v>v<>^>^v<>>><>v>v<<v<^<>>>vv>>v>^<>vv^v><><^v^>v<^^>v<^v>>v^>^>>v>v>^>^<^^>vv>>^vv<^><>^><<v^<><<^<^>^^vv^<<^^<^^v<v<>^>v>>>>>>vv<<v>^>vv^>^><^<^^><<vvvv>vvv<><<><v^vv><v^^<>^>><^vv<><>^>vv>>>vv^vv<<^v^^<<v^^>^>vvv<><<v>^>^>v<v>^<^^^^<^>^>><>>^^vv<>v<^>v><v<v^>>v<^v<vv>v^>v<v^<^^^^v<^<^<<v<<<v<v^^>vv^>><<<v>>^^^>^<^>>>v^v><^^vv^>><^^vv<vv<v^><>>^><<<>>^^v^v<<v^<vv^^^>><>>^v^^^>>^>^<<^>v>^^v>><>v>^>vv^^<vvvv<><^v>^><<>>><^<^v^<<vvv^v<<<<<><><<><><<v>v<v>v><^v^^vvv>><>^>^>^v<<vv^^^v^vv><v><><v<v<<>>>v<^<^v<<>^v<<^v<><>v>>^^>^<v^<<^v^^^vv>><v^<v>^v><^<>>>>^^<vv<>^^>^>v^v^^>><>^^<^v^<v<<v<^<<^^vv>v>^<vv<<^^v^vv^>^^<>v>^>^<>vv><v>>><<><<vv^^<vv<>>^v>^<<vv>^><<>^<v>v><<v^<v<><v>^<^<^><^^^^>>>^<>^^><>>v^<vv^<^<<vvvv>>>v^v>>^>v^><<>>v<>>^>><vvvvv<<vvvv<v>^v<vv^<>><<><v^^<^<v>^v<^<<>^v<v^<>v<<>^<<vvv><^><^^^<>>v^<<>vv><^^^>><^>v^v>v<v^>>v>>v>vv<<v<<vvv^^^>^<v^^<^<v<^<>>v^<<v>>v^><v<vvvvv^^^<v^^<><v<<^>>^><^<v^v^^>><v><>v>^<vvvv><<v^^v^>^>v>><>^^v>v^>vv^>v<^<<^vv^>vv^<v>^<v^<>^v>v^>v^<<>^^<^>^^>vv^>>vv>v>vvv><>^v<<<<v^>v^^v<><v<v>^<^><^><<v<>><<>v^^>>><<><>>><<>><v^^>><^>><^<>v^^vvv>v<^<<vv^>vv^><<>v><>^<>v^^v>^>v^<>^><v>^><<^v<v^^<v>><^^>>^<^<^v<v>^>^<^<v><><>>>><>^<^<v>v<v^>v><>v^>v^<<><^<>>v<^vv^^^>^<<<<>^>^<><^vvv>^^<v^v>v>v^v>v>>vv>^><>^vv>^<v<v^<>vv^<v<><>^>>vvv><>>^<<v^<<>^<v^>v<^^^<^<^^<>^>>v>^<v>vv<v^^>><<<<<>>v>^v>^>>>>v>>^^>^<<<^<<<v>>^><<<<^vv<<>^v<^>v^<v<<>v<>^<^<^<^<>>^^^vvv<v>^vv>^><^<v^>^v<v>><><vvv<^^>>v<^v>^>>>><v^<v^^<^^v<vvv<v>^^<<>><^<v^v<^vv>v>vv>^^<>^^^^>>^v><vv<<<v>^v^>>v^>><<<^v^v<<>><<vvvvv<v^vv>vvvv><v^v<^^^><vv^^<>><>><^>^^^^v>v><><v^<>^v<>^^<^^>^^^vvv>>vv^v^<v<vv^v>v>>>^v^^vv^<^v>v^v>>^v>v<v^<^^><vvv>><<>><>><v>v<^<v>>>>v^^v^^>^><<v><^<<>>v<>^^<<>vv^>>vv^^^v>>>^v^><v<<^>v<v><>>>^>>^<<>>^><<vv<^^>^^^v^^<>>>vv><<>v<><<<>v<<>>>v<>v<>^<vv^v<^^<<<v>^v>>^^>^><<^vv<><><>v>^v>^<>v>>^^^<^^>>vv>v<<<v^><<v><^v><>v<^<<^<>^vv>^><^^^^^<<v^^<>v>><^<v^^^vv>^v<>^<v<v>v>^><^<<^<>><^^>vv^<>^<>vv<>>v<vv^>><^^<^>v<><>vv<v<>>v><v^^^>^^^<<vv^><^^v>v>^<^>v^><<vvv>v^><vv<><^<><^>^v<><<v^<<><>^^^^<<^>>^>^v^>v>^<<^>vv^vv^v<>^<<^>v<^^<<v<v<<<^>vv^>><>v>><><v>v><v^><vvv>vv<<vvv>v^<<^v<^<><<^v>v<>>vv<<v^>v>v<<>>^vv^<^^^<^v>>^<vv>^<v>><>v>^^<<v^<>>>>>v^v>><>v^>>^<>>^<^vvv^^^<^v<><vvv^>^>v><<v>>^v>v<v>v^<v>v>^<>vvv>vvv^^<>vv>^^^^^>v<<^v<>>>><<<>>><vv>>^v^^v<v^>>>^>^v<^v>^v<>vv<><vvv^v<<<<v<vv>vv^<^vvv<^v>v^^vv<^>>>^^>>^^><>^>>v<>>>^^<<v<^<<<<<^^<v^^^<<>><<<^>^v^>vv<>>>^^v><<>^^^^<vvv><^^<>>>^><<^>><v>^<>^v^<vvvv^>>^><<>><^<v^>>vv^vv<^>>>><^>^v<^<v<^^<^<^><^<>>^<>v^v<<>v>v<>><<v<^v<<<^v<v<>><v<^<^>>v>v>><v^<v><>>>>>v^v>><^<^<v>><v^v>v<>v<v><<<>^^><>^^<^vv^^<>v><><><^>^^v^vv^<><>>>>v><>>^>^<<^<v<v^>v^^<v>>><<^^vv^^>><<^<vvvvv>><^>^>>^vv<><<>v>v^<<<^v<^^<<^vv>v<vvv><^v>vv^vvvv<^>^v^<<<<^v<<<>^vvv>^v><<>>v<v<^v^<>v>>^^v^vv>>>^v^^>>^<><><<<<^vv>>>>>v>v^>v<>><<<>^vv>^^^^<^^^>^^^^>^^^v^v><^>^>>>v<v<^<^^<<^v<<^<>vvv^^^^v^<<>vv>^^>>><^^v<^<<<v<>v<<><>v<><>^<v<<^>^^>><<v>^^><^^v<^<v^<^^<>^<>^v^>>^^v^v^<>v<>^<<<>^v^v>^<vvvv<>v<<>vv^<<>vv>>>>^<v><>>>v^><<>^v>><<>>^^v><^<>>vv^^^>vv^<^^v><v>>vvv^v<^v>v<<^^<>v^^^v^^>><v^>>v^v^vv<^>v^<^>^>v<v^><vvv^>^<>v<<^><^^<vv>v>>vv>v^>>^vvv>>v^>^^>vvv>>v><<>>^^v>v<v<><<<<^^v<^<>^v>><v^^^<>>vvv>v><<v>^^<^vvvv^v>v>^vv>^vv^^v><<>>^^>>v>>>^v><^>v<^^<>vv>v>v^^^>>^^^><<<<>>^>>^<^v<^<^<>^><v<<v>v<>^>>^<<v^^<v^vvvvv>>v^>>^^^<^^<><<><><>^v>vvv^>^^>v<^^>^<<^v^^^><>><<v<^^^<<<<>><>><<^^v><v^<<^v<v><<>^<v>^>^v>vv>><v^<^<v<v<v><^^^^>>><^<><^v^v<<<^>vv^<v^>^^v^>>><<<<^<>>><v>>>vv^>^^<v^v>>>v^<^<>vv>^v^^><<<v>v>v>><>>>v<^>^<>>^^<v^<<^<v^>><^v^><><v><><v^vvv<<>v>>><<><v>v<>>><^<^^v<v>^<<>^v>^>^>^^<^^><^>>>>><^^>vv>^<^^<><^>^<^^><^<v>v^>><^>^^^>>v^v<^>>^<v^<>^><><v>>^v<v^^^^v<^vv><^v>>^^^<>^<^<^>vv^v<<>vv>^<>v>^>^>vv^v<vv<^^^v<v>v>v^<^^^v><v<<<^^<><^^>>>><<^^v<<^>v<<vv^^^vv^vv^<v><>^v<v>>><vv^v<v^>>>>^<<<vv^>>v>^><<><<^<^><<vv^>v^>><>v^<<<>v^><>><<>>v><>v^<v><>^v>>><><>>>^vvv^v>vv>>>^^v^><<v<>>^^^v^^><<^v<><><v<<v<v<><<<v^<^^^<>v^^v<^^<<^>v<<v><^<<<<>><>^v>^<>^<^^v^vvv>^^<>^>><v^^vv^<>^<><<^^^v<^^^>>^^v>^>^<^>v><<^<>^v<><vv^vv<><<<<<<v<<v<<vv^<<^<^vvvv><v^v^v<>>>vvvvv^<vv^<^<>vv>^<><<v><>v^^<v<>>>vvv^><^<^>v^^<v>^<>>>^^v^<vv<<<<^><v<<<>v<<<v<>>^^^>^><>v>^v^>^<v^^><^v^^<^v^^>^v>>^^^<<><><<<>v>><^><>>>vvvv>v>>v>^^^^v<><vv<^<v^v>>^^vv<^>vvv>^v>>><v<v<v^<^>^^<vvv<vv<v>>^vv>^<<^<^<v>v^<vv^^^v>vv<v><v><v>^<v>>vv<>v>^^>v^^^<>v<>v^v<>^<><v><^>^<v^v><<^v^v^v<<v><<^^<^vv>^<^v><>v>><v^v^>><><><<<v<>v<^vv>v<v<<>^vvvvv^<<<^<vv><<><>v^<^v<<<^>v>v<v^<<^>v<<^<v><<<^>vv>v>^<^^v>>>><>vv>>vv>vvv<>^^<>^v^<>vvv<^^^vv>v><<<<vv^v><v^<^<<<><v<>^><<>^>v<^^<<>v>>v<<>><^^<<<^<^vv^^>v>v<>^^>>^v^vvv>^v^>v>>v>v>v>>vv^<><<<<>v^^>vv<^^v>>v<vv<^>>^<>^^v<><vv^<><v><v<<v^v<^^<^v^v<>v<<><vvv><<<^<^^<<>>^v>>>^v>>>v<>>^><<<><><<<v<vv<^<>v^^v^^>^<<^^^v^>^<<^>^>^>>>>v<v<v<>vv<<vv^<<^<vv>^^<^<<>><^v><><>^<v><v^>^v>^<^>^^><v><<^<v^^<<^><><v>v<>>><<^><v<^vvv^<<<>><<>^v^^><vv>vv<>^>^>vv<>v^<^<>vv><<>^<v<vv<^<^<><^vv<<^>>>v<>><<>>>^^^^<<^v>>v<vv>^^>v<v<vv^><<><>>>v>>^^v<^v^^>>v^<>>v^>><^<^^v<v<><<><>>^<>><^v<^^^^><>^>vv>>^vv<<>v<<<<<<><<<><<>><v><^^^<>>v<^><^vvv<>^>^^v>^<v><^v^vv^<<>v<<<<v>^vv>>v>vv<<^>^<>>vvv^<v<><>><>^^^^vvvvvvv<<>v<^><^^>vv^^<v<<^^<vvv<v<v<<>><<><v^^>><^<>^v^vv<<v<v<>><<>>>>>^vv<><v<>v><v>v>><v<v^vvvvv<><>v>>v<><<<^^<>^<^^<v>v^<vv>^vv^<>^<<^<vv><v<v>>v>^<>v^<<v^<v>^v<>><v>>>>^<<^^^v<^<>><^<><v>>vv^>^<^<^>>v^>^^^^>vvvvv>^v<^><^^<^^>^<^^^^^^^>v>>vv>v^^^v^^^<>v><^>>>v>^>^>^>vv<vv<^^>>^>>>v<>v><<^<<v^>^>>>>^^><^^<v<<<<>>v>v^v^^<>><v<^<<<<v^^^^<v<<<^>v>^^<vv<^^^^^v>^v^<v><>>^^>^v>^>^vv^v>v>v^>v>^>>^^^^>>^>>^><>><v>v>>><<^v^v^>^>^>>vv><<^>v<v<v^<<>>^v<<^v<<^><^>>^<v>^>vv>v>^^^>v^^<^<^^>vv>^^><v>>^v>^v<<^^^<<^v^>^<<^>vv^>>^<^v><<>v><^^^<^^>>vv>^vv>><^<<<^>vv^v>v<^<<<^<^<<><^^>>>v^<^^^>^<><^v>>^<<v<^v>>v^<^<^<^^^<v^><<vvv^<^v^vv^vv<v<<v<^<>^v>^^^<^^v<v<v><<<^<>^^^^v>v^v^v^v<v><v>>^v><vv^^^v>><<v^vvvv<<<^v<<><^>^<v^^v<>vvvv^vv<>^v<><>^^<>>vvv<^>><v^<<>v>v<>^v^>v^>><<>>^^<^v<>>^>^><>>^<v<v^^<^v><v^<v<><><^<<><v^v<<>vv<v<v<^>>><>vv^^<><<v<^^<<^<><^^^>^>>>^<^>>>^>><^^^<^v^^^v^v^v>v>v><vv>><vvv<<v><><^^>^v<v>><v><^><^<<>v^vv^v><^vv>^>>v<vv><^<^^v<^^vv<vv<v<v>v><v<vv<<>^^v^^v<<<^<>v^^^<><>>><^>v^^^v^vv<<<^>>v><^>v^<>>>>^<>^^vvv^^<><^>^^<><>^vvv^^<vv^>vv^^^^v<>vv<^^^v<<>><<vvvvv>v>^^^vv>><v><v<>vvvv<v^><^<>^>^<>v>v>v^vvvv<><^v>>>^^>><vvv<>^>^v^<vvv>v^vv^vv><>><>v^^v^vv<^v>vv>>v<v><^<<^v<>>^vv^<v>v><v>v>^v>^<v>^<<^>vv>v<^<^vv^<^><<<v<<^^vv<vvv><>v>v<vv^<><><^vvv>>vv<^^^v><^v><<^>^^v>^<>><v<>>^^<<<v><>^>^><vvvv<>^<<<><<<^<>>v^vv^>><^vv^^>^<v^<v>><^^>>>^v>^v<>^v<><^><vv>v^^^<^>>^<<^<^><<<^^<v<<^vv<^<>v<^<<^^<v<vv<<><v<v^<>^<>v>>v<^v>v<>^^vvv<>vv^v^<><v^vv^<^v^v><>^><v^<>>^^^<>>vv^<v>^^v><v<^>^^^^^^><>>vvv<<><><v<^>v<>v^v<<<<>v^>>>>^v>^^<v^>v><v^<^^v<<<<v<<<>^v<^>^v>v^^>v^^vvv>vv<>^>v><v<>^<vv><>>><<^>>><<v>v^^<^<<<<v^<>>>v<<<^v^vv<>^v>v<<<<>^^>><v><>v<v><^^>><>^>^>v>>><v>^vvvv<><><^>>^v^><<>^v<><><^><<<>v^^>v>^>v^<v^vv<>><^vv^^>^^><vv<<>v>v^^>><v^>^<^<>>>vv<>^>v>v^<>v<^<<v>>>^<>v^>v>>vv^^<>>v<v<<^<>v>v^<^^^>v^^>v>v>vv<^<v>v^^><<<v<><>^^<>v>v>^^v>v>v^v>>^<v^v>><>^^>^<>>>^vv^><v^<^>v^>^v><^>^^^vv^^v<>vv<>>^><<^v>^v^>>v>^v^<<^^^vv<<vvv>^vv^v<<<v^^<<><vv<>>^^vv>^^^vv>><><v>v<^v^>>>vv^><>><v<^v<>^><v<^^^^>><^<>v>^v<^vv>v>v<^<>v>v>^<vv>v<^>vvv<v^<vv<vv<>v>^><v^v<>>>>>v>><^v<>v>^v><v^v^vv<>^<vvv^>><v^<vvv^^<^vvv^v^<>><v>v^^v<><>v^^^v<<<^><v<<<>><<vv<<><vvv^v>>v^v<v^>>><<v<>^v><>vv<<v>v^vv>v^v<^<vv<><><^v>^<vv>v^^>>^^^><vv<><^>>>^<v^<<^^>^>vv^><v<vvv>^^>>>^><<vv>vv>^<>>^^><^v><<>^<<<v^>^

1408個のライトが点灯します。

入力を生成するには、次のPythonスクリプトを使用できます。

import random
length = random.randint(15, 10000)
walk = ''
chars = ['v', '<', '>', '^']
for i in range(length):
    walk += random.choice(chars)
print(walk)

標準のスコアリング、勝者は最小のバイト数です。


16
4. 4つのライトが点灯します。
ベータ崩壊

4
いいえ、5つあります。
CasperTheFriendlyCode

9
ああ、人々、新参者にそれほど厳しくしないでください。
リーキー修道女

7
挑戦は私には非常に明確(そして興味深い)に見えます。再開の投票
ルイスメンドー

5
苛立ちは見ていませんが、改善が必要なものについてのアドバイスだけで、チャレンジの準備ができました。素敵な最初の挑戦!
-trichoplax

回答:


28

MATL19 18 17 13バイト

@LeakyNunの、虚数単位をべき乗のベースとして使用するというアイデア(彼の答えを参照)のおかげで、5バイトの余裕があります。

Jj11\^Ys8#uos

オンラインでお試しください!テストケース:12

説明

コードは、複素平面の単位ステップを使用してパスをトレースします。次に、各ポジションにアクセスした回数をカウントし、奇数回アクセスしたポジションの数を出力します。

J         % Push the imaginary unit, 1j
j         % Input string
11\       % Modulo 11. This gives 7 6 5 8 for > ^ < v
^         % 1j raised to those numbers, element-wise. This gives -1j for >, -1 for ^,
          % 1j for < and 1 for v. So it gives the displacements in a "transposed"
          % complex plane
Ys        % Cumulative sum. This transforms displacements into positions
8#u       % Count of occurrences of each unique position
o         % 1 if odd, 0 if even
s         % Sum. Implicitly display

これは奇妙に見える
リーキー修道女

間隔を意味する場合、はい、それはいです。:Matlabの上では、より良い表情をして0+1i 0-1i -1+0i 1+0i
ルイス・Mendo

いいえ、それはあなたに3バイトをゴルフしていました
リーキー修道女

@LeakyNunはい、私はちょうど:-) 13バイトになりました!
ルイスメンドー

i代わりに使用するのはなぜjですか?
リーキー修道女

19

Python、68バイト

Sp3000のおかげで25バイト。

Luis Mendoが11でモジュラスを取るというアイデアのおかげで2バイト。

xnorのおかげで17バイト。

d=set()
p=0
for c in input():p+=1j**(ord(c)%11);d^={p}
print(len(d))

できた!


4
それはやってセットを使用して短いだd^={p}としますlen(d)
xnor

8

ジャワ8、169の 130 127バイト

29 32バイトを節約してくれたLeaky Nunに感謝します。

s->{int l=s.length,d=2*l+1,p=l*d+d,r=0,m[]=new int[d*d];for(char c:s){p+=c<61?-1:c<63?1:c<95?-l:l;m[p]^=2;r+=m[p]-1;}return r;}

Ungolfed(sorta):

public static int f(char[] s) {
    int l = s.length, d = 2*l+1, p=l*d+d, r = 0;
    int[] m = new int[d*d];
    for(char c : s) {
        p += c<61 ? -1 : c<63 ? 1 : c<95 ? -l : l;
        m[p] ^= 2;
        r += m[p] - 1;
    }
    return r;
}

for(char c:s){p+=c<61?-1:c<63?1:c<95?-l:l;m[p]^=2;r+=m[p]-1;}for(int c:s)r+=(m[p+=c<61?-1:c<63?1:c<95?-l:l]^=2)-1;8バイトを節約することができます:オンラインで試してください。
ケビンクルイッセン


7

Perl、49バイト

-p STDINの制御文字列を使用した実行の+1が含まれます

./lights.pl <<< "<<>"

lights.pl

#!/usr/bin/perl -p
$\-=1-($a{$x+=/</-/>/,$y+=/\^/-/v/}^=2)for/./g}{

入力が10000バイトに制限されている場合、これは次のようになり44+1ます。

$\+=$#{$x+=/</-/>/.e5+/\^/-/v/}*=-1for/./g}{

6

TSQL、238の 235 203 191バイト

再帰SQLを使用してメモリ内にテーブルを作成します。そのテーブルからの選択と計算(1行コード)。

ゴルフ:

DECLARE @ varchar(max)= 'v>v<';

WITH C as(SELECT 0 a,b=1UNION ALL SELECT
a+POWER(CHARINDEX(SUBSTRING(@,b,1),'> <v')-2,15),b+1FROM
C WHERE b<=LEN(@))SELECT top
1sum(sum(1-1/b)%2)over()FROM c
GROUP BY a OPTION(MAXRECURSION 0)

ゴルフをしていない:

DECLARE @ varchar(max)= '>>>><^v^v';

WITH C as
(
  SELECT 0 a,b=1
  UNION ALL
  SELECT a+POWER(CHARINDEX(SUBSTRING(@,b,1),'> <v')-2,15),b+1
  FROM C
  WHERE b<=LEN(@)
)
SELECT top 1sum(sum(1-1/b)%2)over()
FROM c
GROUP BY a
OPTION(MAXRECURSION 0)

フィドル



3

SQF、160バイト

関数としてのファイル形式の使用:

x=0;y=0;a=[];{switch(_x){case"v":{y=y-1};case"^":{y=y+1};case"<":{x=x-1};case">":{x=x+1};};if([x,y]in a)then{a=a-[[x,y]]}else{a=a+[[x,y]]}}forEach _this;count a

として電話をかける: "STRING" call NAME_OF_COMPILED_FUNCTION

ゴルフをしていない:

//position tracker variables
x = 0; y = 0;
//`a` keeps track of which coords are switched on
a = [];
{
    //switch based on the magic variable `_x`
    //which is the current element of the forEach
    //and adjust coord tracker variables
    switch(_x) {
        case "v": {
            y = y - 1
        };
        case "^": {
            y = y + 1
        };
        case "<": {
            x = x - 1
        };
        case ">": {
            x = x + 1
        };
    };
    //check if the coord is already turned on
    if ([x, y] in a) then {
        //remove it from `a` using array exclusion
        a = a - [[x, y]]
    } else {
        //append it to `a`
        a = a + [[x, y]]
    }
//do this for each character in _this (the argument)
} forEach _this;
//return the length of `a`
count a

簡単にフォローできますが、パフォーマンスはどうですか?
ジンキング

@zinkingそれは実行方法に依存します。エンジンのロード時に静的コンパイルを使用すると非常に高速になり、を使用すると非常に遅くなりますcompile "CODE"
Οurous

3

Pythonの:207 189 181のバイト

a = input()
l=[]
for i in range(0,len(a)):
 if a[i]=='v':y-=1
 if a[i]=='^':y+=1
 if a[i]=='<':x-=1
 if a[i]=='>':x+=1
 if [x,y] in l:l.remove([x,y])
 else:l.append([x,y])
print(l)

入力は文字列です。

@LuisMendoには、実際には1スペースだけインデントできることを指摘してくれてありがとう。私のPythonの先生たちに、常に 4ずつ増やしていくように言ってくれないか。

格納されていると想定されるのではなく入力が取得されるように修正すると、実際に8バイト節約されました。


Pythonはわかりませんが、1スペースのインデントで十分だと思います。これにより、数バイト節約できます
ルイスメンドー

4
ただし、コードゴルフではありません:-)
ルイスメンドー

5
入力が事前に保存されているとは想定できません。ただ、使用input()してどこかに保管
漏れ修道女

1
複数レベルのネストされたインデントが必要な場合は、スペースとタブの混合に関する素晴らしいヒントがあります
-trichoplax

2
Um ...最初の=とl + = [[x、y]]の周りの空白を削除することも、l.append([x、y])より短いかもしれません。
メガマン

3

Ruby、64 + 6 = 70バイト

-rsetフラグ用に+6バイト。

Leaky NunのPython回答のストレートポート。

->s{d=Set.new
q=0
s.each_char{|c|d^=[q+=1i**(c.ord%11)]}
d.size}

repl.itで参照してください:https ://repl.it/Cnjy


-rsetフラグは4バイトとしてのみカウントされると思います。
チョイス


@ValueInk Oof。私はそれがまったく好きではありません。しかし、ヘッズアップをありがとう。
ヨルダン

1
私は彼らがこれをしたい理由についてかなり良い点を挙げたと思います(-eRubyで「フリー」であること-nは3ではなく1バイトですが、それを知らない人は異なるバイトカウントを報告することができます)自分の。ところで、Set[]2バイト節約しますSet.new
バリューインク

1
rset答えを考えずに考えていた別の考え:電話をかけることができるので、bytes.map4バイト節約each_charできordます。
バリューインク

2

R、172の 156 137 101 96バイト

n=function(a)sum(table(cumsum(sapply(strsplit(a,"")[[1]],switch,v=-1,"^"=1,">"=1i,"<"=-1i)))%%2)

@LeakyNunの複雑な平面のアイデアを使用します。

食べない

n=function(a){
    b=strsplit(a,"")[[1]]                        #Splits String up
    p=sapply(b,switch,v=-1,"^"=1,">"=1i,"<"=-1i) #Replaces characters with directions
    q=cumsum(p)                                  #Finds each location visitied
    t=table(q)%%2                                #Determines if spots were visited an odd # of times
    sum(t)                                       #counts odd visited spots
}

2

Javascript(ES6)、97 93 85バイト

i=>[...i].reduce((c,d)=>c-1+(v[p+=v['^<>v'.search(d)]]^=2),0,p=1E6,v=[-1E3,-1,1,1E3])

編集:-8バイト、ニールのおかげ

テスト:

var test0 = 'v>v<^^<v<<^<^><<>^^>>><v>vv^v>v^><><<^>><<<vvv^vvv>v>>v><vv^^<<>vv^^>v^<>>^^<^^>^^v<^>^<vvv^v^v><^<<v<<>><<>v>>^><^>^^<>>>>vv>^<<^<<><vvv<v^>>vvv>v^>>><<v^>^^^^v>>^>^v>v<vv^<>^<<v>vv>><^^<^><vv^^v<v<v^^^>v<^vv^v<><vv^^^>v^>v>vv<<^><v<^v><<v^^v>>v<vv<><^^^v<^v><><<^^<>^>><^^^>vv^<>>>>^<^<<<<>>>v<<v<v<vv><<vv<vv<^v^^^>>vv<>v>><<<v^>vv><v<<<v<<>^vvv^<v^v>^^v^v><<v^>>>v<v<v^>>>v><>>>^<><<<<>vv>v><v>v><^v<>v>>>vv<<>^>^>v<^><^<^vv^><^^>v<^^v>v^v<^^^^vv<>v<>><v^^><>v<<<>v^<v^^><>^<>^<>><>^^<>^v><>>><v<^^>>v>^^^<v';
var test1 = '>>><^>>>^vv><^^v^<<<>>^<>>^<^>^<<^^v^<v^>>^<<><<>^v<^^^vv>v><^>>^<^<v><^v<^<<^^v><>>^v<^>^v<vvv<<<v^vv>>^vv>^^<>>vv>^<^>vv<>v^<^v<^^<v^^^<<^><><>^v>vvv<^vvv<vv><vv<^^v^^<^^>>><<<>^<>>><^<<<>><>^v><^^vv<>>><^^^<^>>>>v<v^><<>v<v<v^<<^><v^^><>v>^<>^^^vvv<v^>^^^^v>v<v>>>v^^<v<vv>><<>^vv><<vv<<>^^v>>v<^^v>><v<v<<>^^vv>>^v>v>v<>^>^v<>>><>v>v<<v<^<>>>vv>>v>^<>vv^v><><^v^>v<^^>v<^v>>v^>^>>v>v>^>^<^^>vv>>^vv<^><>^><<v^<><<^<^>^^vv^<<^^<^^v<v<>^>v>>>>>>vv<<v>^>vv^>^><^<^^><<vvvv>vvv<><<><v^vv><v^^<>^>><^vv<><>^>vv>>>vv^vv<<^v^^<<v^^>^>vvv<><<v>^>^>v<v>^<^^^^<^>^>><>>^^vv<>v<^>v><v<v^>>v<^v<vv>v^>v<v^<^^^^v<^<^<<v<<<v<v^^>vv^>><<<v>>^^^>^<^>>>v^v><^^vv^>><^^vv<vv<v^><>>^><<<>>^^v^v<<v^<vv^^^>><>>^v^^^>>^>^<<^>v>^^v>><>v>^>vv^^<vvvv<><^v>^><<>>><^<^v^<<vvv^v<<<<<><><<><><<v>v<v>v><^v^^vvv>><>^>^>^v<<vv^^^v^vv><v><><v<v<<>>>v<^<^v<<>^v<<^v<><>v>>^^>^<v^<<^v^^^vv>><v^<v>^v><^<>>>>^^<vv<>^^>^>v^v^^>><>^^<^v^<v<<v<^<<^^vv>v>^<vv<<^^v^vv^>^^<>v>^>^<>vv><v>>><<><<vv^^<vv<>>^v>^<<vv>^><<>^<v>v><<v^<v<><v>^<^<^><^^^^>>>^<>^^><>>v^<vv^<^<<vvvv>>>v^v>>^>v^><<>>v<>>^>><vvvvv<<vvvv<v>^v<vv^<>><<><v^^<^<v>^v<^<<>^v<v^<>v<<>^<<vvv><^><^^^<>>v^<<>vv><^^^>><^>v^v>v<v^>>v>>v>vv<<v<<vvv^^^>^<v^^<^<v<^<>>v^<<v>>v^><v<vvvvv^^^<v^^<><v<<^>>^><^<v^v^^>><v><>v>^<vvvv><<v^^v^>^>v>><>^^v>v^>vv^>v<^<<^vv^>vv^<v>^<v^<>^v>v^>v^<<>^^<^>^^>vv^>>vv>v>vvv><>^v<<<<v^>v^^v<><v<v>^<^><^><<v<>><<>v^^>>><<><>>><<>><v^^>><^>><^<>v^^vvv>v<^<<vv^>vv^><<>v><>^<>v^^v>^>v^<>^><v>^><<^v<v^^<v>><^^>>^<^<^v<v>^>^<^<v><><>>>><>^<^<v>v<v^>v><>v^>v^<<><^<>>v<^vv^^^>^<<<<>^>^<><^vvv>^^<v^v>v>v^v>v>>vv>^><>^vv>^<v<v^<>vv^<v<><>^>>vvv><>>^<<v^<<>^<v^>v<^^^<^<^^<>^>>v>^<v>vv<v^^>><<<<<>>v>^v>^>>>>v>>^^>^<<<^<<<v>>^><<<<^vv<<>^v<^>v^<v<<>v<>^<^<^<^<>>^^^vvv<v>^vv>^><^<v^>^v<v>><><vvv<^^>>v<^v>^>>>><v^<v^^<^^v<vvv<v>^^<<>><^<v^v<^vv>v>vv>^^<>^^^^>>^v><vv<<<v>^v^>>v^>><<<^v^v<<>><<vvvvv<v^vv>vvvv><v^v<^^^><vv^^<>><>><^>^^^^v>v><><v^<>^v<>^^<^^>^^^vvv>>vv^v^<v<vv^v>v>>>^v^^vv^<^v>v^v>>^v>v<v^<^^><vvv>><<>><>><v>v<^<v>>>>v^^v^^>^><<v><^<<>>v<>^^<<>vv^>>vv^^^v>>>^v^><v<<^>v<v><>>>^>>^<<>>^><<vv<^^>^^^v^^<>>>vv><<>v<><<<>v<<>>>v<>v<>^<vv^v<^^<<<v>^v>>^^>^><<^vv<><><>v>^v>^<>v>>^^^<^^>>vv>v<<<v^><<v><^v><>v<^<<^<>^vv>^><^^^^^<<v^^<>v>><^<v^^^vv>^v<>^<v<v>v>^><^<<^<>><^^>vv^<>^<>vv<>>v<vv^>><^^<^>v<><>vv<v<>>v><v^^^>^^^<<vv^><^^v>v>^<^>v^><<vvv>v^><vv<><^<><^>^v<><<v^<<><>^^^^<<^>>^>^v^>v>^<<^>vv^vv^v<>^<<^>v<^^<<v<v<<<^>vv^>><>v>><><v>v><v^><vvv>vv<<vvv>v^<<^v<^<><<^v>v<>>vv<<v^>v>v<<>>^vv^<^^^<^v>>^<vv>^<v>><>v>^^<<v^<>>>>>v^v>><>v^>>^<>>^<^vvv^^^<^v<><vvv^>^>v><<v>>^v>v<v>v^<v>v>^<>vvv>vvv^^<>vv>^^^^^>v<<^v<>>>><<<>>><vv>>^v^^v<v^>>>^>^v<^v>^v<>vv<><vvv^v<<<<v<vv>vv^<^vvv<^v>v^^vv<^>>>^^>>^^><>^>>v<>>>^^<<v<^<<<<<^^<v^^^<<>><<<^>^v^>vv<>>>^^v><<>^^^^<vvv><^^<>>>^><<^>><v>^<>^v^<vvvv^>>^><<>><^<v^>>vv^vv<^>>>><^>^v<^<v<^^<^<^><^<>>^<>v^v<<>v>v<>><<v<^v<<<^v<v<>><v<^<^>>v>v>><v^<v><>>>>>v^v>><^<^<v>><v^v>v<>v<v><<<>^^><>^^<^vv^^<>v><><><^>^^v^vv^<><>>>>v><>>^>^<<^<v<v^>v^^<v>>><<^^vv^^>><<^<vvvvv>><^>^>>^vv<><<>v>v^<<<^v<^^<<^vv>v<vvv><^v>vv^vvvv<^>^v^<<<<^v<<<>^vvv>^v><<>>v<v<^v^<>v>>^^v^vv>>>^v^^>>^<><><<<<^vv>>>>>v>v^>v<>><<<>^vv>^^^^<^^^>^^^^>^^^v^v><^>^>>>v<v<^<^^<<^v<<^<>vvv^^^^v^<<>vv>^^>>><^^v<^<<<v<>v<<><>v<><>^<v<<^>^^>><<v>^^><^^v<^<v^<^^<>^<>^v^>>^^v^v^<>v<>^<<<>^v^v>^<vvvv<>v<<>vv^<<>vv>>>>^<v><>>>v^><<>^v>><<>>^^v><^<>>vv^^^>vv^<^^v><v>>vvv^v<^v>v<<^^<>v^^^v^^>><v^>>v^v^vv<^>v^<^>^>v<v^><vvv^>^<>v<<^><^^<vv>v>>vv>v^>>^vvv>>v^>^^>vvv>>v><<>>^^v>v<v<><<<<^^v<^<>^v>><v^^^<>>vvv>v><<v>^^<^vvvv^v>v>^vv>^vv^^v><<>>^^>>v>>>^v><^>v<^^<>vv>v>v^^^>>^^^><<<<>>^>>^<^v<^<^<>^><v<<v>v<>^>>^<<v^^<v^vvvvv>>v^>>^^^<^^<><<><><>^v>vvv^>^^>v<^^>^<<^v^^^><>><<v<^^^<<<<>><>><<^^v><v^<<^v<v><<>^<v>^>^v>vv>><v^<^<v<v<v><^^^^>>><^<><^v^v<<<^>vv^<v^>^^v^>>><<<<^<>>><v>>>vv^>^^<v^v>>>v^<^<>vv>^v^^><<<v>v>v>><>>>v<^>^<>>^^<v^<<^<v^>><^v^><><v><><v^vvv<<>v>>><<><v>v<>>><^<^^v<v>^<<>^v>^>^>^^<^^><^>>>>><^^>vv>^<^^<><^>^<^^><^<v>v^>><^>^^^>>v^v<^>>^<v^<>^><><v>>^v<v^^^^v<^vv><^v>>^^^<>^<^<^>vv^v<<>vv>^<>v>^>^>vv^v<vv<^^^v<v>v>v^<^^^v><v<<<^^<><^^>>>><<^^v<<^>v<<vv^^^vv^vv^<v><>^v<v>>><vv^v<v^>>>>^<<<vv^>>v>^><<><<^<^><<vv^>v^>><>v^<<<>v^><>><<>>v><>v^<v><>^v>>><><>>>^vvv^v>vv>>>^^v^><<v<>>^^^v^^><<^v<><><v<<v<v<><<<v^<^^^<>v^^v<^^<<^>v<<v><^<<<<>><>^v>^<>^<^^v^vvv>^^<>^>><v^^vv^<>^<><<^^^v<^^^>>^^v>^>^<^>v><<^<>^v<><vv^vv<><<<<<<v<<v<<vv^<<^<^vvvv><v^v^v<>>>vvvvv^<vv^<^<>vv>^<><<v><>v^^<v<>>>vvv^><^<^>v^^<v>^<>>>^^v^<vv<<<<^><v<<<>v<<<v<>>^^^>^><>v>^v^>^<v^^><^v^^<^v^^>^v>>^^^<<><><<<>v>><^><>>>vvvv>v>>v>^^^^v<><vv<^<v^v>>^^vv<^>vvv>^v>>><v<v<v^<^>^^<vvv<vv<v>>^vv>^<<^<^<v>v^<vv^^^v>vv<v><v><v>^<v>>vv<>v>^^>v^^^<>v<>v^v<>^<><v><^>^<v^v><<^v^v^v<<v><<^^<^vv>^<^v><>v>><v^v^>><><><<<v<>v<^vv>v<v<<>^vvvvv^<<<^<vv><<><>v^<^v<<<^>v>v<v^<<^>v<<^<v><<<^>vv>v>^<^^v>>>><>vv>>vv>vvv<>^^<>^v^<>vvv<^^^vv>v><<<<vv^v><v^<^<<<><v<>^><<>^>v<^^<<>v>>v<<>><^^<<<^<^vv^^>v>v<>^^>>^v^vvv>^v^>v>>v>v>v>>vv^<><<<<>v^^>vv<^^v>>v<vv<^>>^<>^^v<><vv^<><v><v<<v^v<^^<^v^v<>v<<><vvv><<<^<^^<<>>^v>>>^v>>>v<>>^><<<><><<<v<vv<^<>v^^v^^>^<<^^^v^>^<<^>^>^>>>>v<v<v<>vv<<vv^<<^<vv>^^<^<<>><^v><><>^<v><v^>^v>^<^>^^><v><<^<v^^<<^><><v>v<>>><<^><v<^vvv^<<<>><<>^v^^><vv>vv<>^>^>vv<>v^<^<>vv><<>^<v<vv<^<^<><^vv<<^>>>v<>><<>>>^^^^<<^v>>v<vv>^^>v<v<vv^><<><>>>v>>^^v<^v^^>>v^<>>v^>><^<^^v<v<><<><>>^<>><^v<^^^^><>^>vv>>^vv<<>v<<<<<<><<<><<>><v><^^^<>>v<^><^vvv<>^>^^v>^<v><^v^vv^<<>v<<<<v>^vv>>v>vv<<^>^<>>vvv^<v<><>><>^^^^vvvvvvv<<>v<^><^^>vv^^<v<<^^<vvv<v<v<<>><<><v^^>><^<>^v^vv<<v<v<>><<>>>>>^vv<><v<>v><v>v>><v<v^vvvvv<><>v>>v<><<<^^<>^<^^<v>v^<vv>^vv^<>^<<^<vv><v<v>>v>^<>v^<<v^<v>^v<>><v>>>>^<<^^^v<^<>><^<><v>>vv^>^<^<^>>v^>^^^^>vvvvv>^v<^><^^<^^>^<^^^^^^^>v>>vv>v^^^v^^^<>v><^>>>v>^>^>^>vv<vv<^^>>^>>>v<>v><<^<<v^>^>>>>^^><^^<v<<<<>>v>v^v^^<>><v<^<<<<v^^^^<v<<<^>v>^^<vv<^^^^^v>^v^<v><>>^^>^v>^>^vv^v>v>v^>v>^>>^^^^>>^>>^><>><v>v>>><<^v^v^>^>^>>vv><<^>v<v<v^<<>>^v<<^v<<^><^>>^<v>^>vv>v>^^^>v^^<^<^^>vv>^^><v>>^v>^v<<^^^<<^v^>^<<^>vv^>>^<^v><<>v><^^^<^^>>vv>^vv>><^<<<^>vv^v>v<^<<<^<^<<><^^>>>v^<^^^>^<><^v>>^<<v<^v>>v^<^<^<^^^<v^><<vvv^<^v^vv^vv<v<<v<^<>^v>^^^<^^v<v<v><<<^<>^^^^v>v^v^v^v<v><v>>^v><vv^^^v>><<v^vvvv<<<^v<<><^>^<v^^v<>vvvv^vv<>^v<><>^^<>>vvv<^>><v^<<>v>v<>^v^>v^>><<>>^^<^v<>>^>^><>>^<v<v^^<^v><v^<v<><><^<<><v^v<<>vv<v<v<^>>><>vv^^<><<v<^^<<^<><^^^>^>>>^<^>>>^>><^^^<^v^^^v^v^v>v>v><vv>><vvv<<v><><^^>^v<v>><v><^><^<<>v^vv^v><^vv>^>>v<vv><^<^^v<^^vv<vv<v<v>v><v<vv<<>^^v^^v<<<^<>v^^^<><>>><^>v^^^v^vv<<<^>>v><^>v^<>>>>^<>^^vvv^^<><^>^^<><>^vvv^^<vv^>vv^^^^v<>vv<^^^v<<>><<vvvvv>v>^^^vv>><v><v<>vvvv<v^><^<>^>^<>v>v>v^vvvv<><^v>>>^^>><vvv<>^>^v^<vvv>v^vv^vv><>><>v^^v^vv<^v>vv>>v<v><^<<^v<>>^vv^<v>v><v>v>^v>^<v>^<<^>vv>v<^<^vv^<^><<<v<<^^vv<vvv><>v>v<vv^<><><^vvv>>vv<^^^v><^v><<^>^^v>^<>><v<>>^^<<<v><>^>^><vvvv<>^<<<><<<^<>>v^vv^>><^vv^^>^<v^<v>><^^>>>^v>^v<>^v<><^><vv>v^^^<^>>^<<^<^><<<^^<v<<^vv<^<>v<^<<^^<v<vv<<><v<v^<>^<>v>>v<^v>v<>^^vvv<>vv^v^<><v^vv^<^v^v><>^><v^<>>^^^<>>vv^<v>^^v><v<^>^^^^^^><>>vvv<<><><v<^>v<>v^v<<<<>v^>>>>^v>^^<v^>v><v^<^^v<<<<v<<<>^v<^>^v>v^^>v^^vvv>vv<>^>v><v<>^<vv><>>><<^>>><<v>v^^<^<<<<v^<>>>v<<<^v^vv<>^v>v<<<<>^^>><v><>v<v><^^>><>^>^>v>>><v>^vvvv<><><^>>^v^><<>^v<><><^><<<>v^^>v>^>v^<v^vv<>><^vv^^>^^><vv<<>v>v^^>><v^>^<^<>>>vv<>^>v>v^<>v<^<<v>>>^<>v^>v>>vv^^<>>v<v<<^<>v>v^<^^^>v^^>v>v>vv<^<v>v^^><<<v<><>^^<>v>v>^^v>v>v^v>>^<v^v>><>^^>^<>>>^vv^><v^<^>v^>^v><^>^^^vv^^v<>vv<>>^><<^v>^v^>>v>^v^<<^^^vv<<vvv>^vv^v<<<v^^<<><vv<>>^^vv>^^^vv>><><v>v<^v^>>>vv^><>><v<^v<>^><v<^^^^>><^<>v>^v<^vv>v>v<^<>v>v>^<vv>v<^>vvv<v^<vv<vv<>v>^><v^v<>>>>>v>><^v<>v>^v><v^v^vv<>^<vvv^>><v^<vvv^^<^vvv^v^<>><v>v^^v<><>v^^^v<<<^><v<<<>><<vv<<><vvv^v>>v^v<v^>>><<v<>^v><>vv<<v>v^vv>v^v<^<vv<><><^v>^<vv>v^^>>^^^><vv<><^>>>^<v^<<^^>^>vv^><v<vvv>^^>>>^><<vv>vv>^<>>^^><^v><<>^<<<v^>^';

S=i=>[...i].reduce((c,d)=>c-1+(v[p+=v['^<>v'.search(d)]]^=2),0,p=1E6,v=[-1E3,-1,1,1E3])

console.log(S(test0))
console.log(S(test1))


1
[...i]代わりに使用しますi.split('')。また、私はあなたが書くことができると思う(p=1E6,v=[-1,1,-1E3,1E3],0)0,p=1E6,v=[-1,1,-1E3,1E3]
ニール

1
^最初に配置できる場合は、searchを1バイト節約しますindexOf。(正規表現のメタキャラクターとして扱う^ためsearch、最初にする必要があり^ます。)
ニール

1
S=部品を数える必要はありません。
user2428118

1
@Arnauldいいえ、引数名自体は関数の一部であり、そのままにする必要があります。ただし、関数を変数に割り当てる( " S=")はオプションです(関数をのように呼び出すことができるため(«function code here»)(«argument»))。
user2428118

2

PowerShell、136バイト

$a=@();switch -w($args|% t*y){'^'{$y++}'>'{$x++}'v'{$y--}'<'{$x--}*{if("$x,$y"-in$a){$a=$a|?{$_-ne"$x,$y"}}else{$a+="$x,$y"}}};$a.length

オンラインでお試しください!

ここにはさらに最適化するものがあると思いますが、これは今のところ最低です。

読みやすい:

$a=@();switch -w($args|% t*y){
    '^'{$y++}
    '>'{$x++}
    'v'{$y--}
    '<'{$x--}
    *{if("$x,$y"-in$a){$a=$a|?{$_-ne"$x,$y"}}else{$a+="$x,$y"}}
};$a.length

説明:入力は文字配列に変更され、各ピースは最初の4つのスイッチケースの1つと一致して、xまたはy座標をインクリメントします。すべてが、ライトのオン/オフを決定する5番目のケースに一致します。最後の長さによって、オンになるスイッチの総数が決まります。

注:座標内のコンマが必要なので、(10,10)や(101,0)のような衝突は発生しません。


アポストロフィをいくつか削除
Veskah

-neアレイで動作する115バイト
mazzy


2

PowerShell96 95バイト

$(switch -w($args|% t*y){^{$y++}'>'{$x++}v{$y--}'<'{$x--}*{"$x,$y"}})|group|% c*|%{$r+=$_%2}
$r

オンラインでお試しください!

展開:

$plane=$(switch -w($args|% toCharArray){
    ^  {$y++}
    '>'{$x++}
    v  {$y--}
    '<'{$x--}
    *  {"$x,$y"}
})
$plane|group|% count|{$result+=$_%2}
$result

PowerShell112 109バイト

ポートルイスMendoのMATLの答え

$args|% t*y|%{($p+=($c=[numerics.complex])::Pow($c::new(0,1),$_%11))}|group{'{0:N2}'-f$_}|% c*|?{$r+=$_%2};$r

オンラインでお試しください!


2

実際には24 23バイト

これは、ルイスメンドーのMATL回答の移植版です。ゴルフの提案を歓迎します。オンラインでお試しください!

編集:リーキー修道女のおかげで1バイト。

O⌠4P@%ïⁿ⌡Mσ;╗╔⌠╜c2@%⌡MΣ

アンゴルフ:

O        ord(c) of the input string (implicit input)
⌠...⌡M   Start a function, and map over the list of ord(). Call the variable i.
  4P@%     i mod 11 (the 4-th prime).
  ïⁿ       1i to the power of (i%11).

σ        Push a list of cumulative sums of the new list of complex numbers.
           This is a list of the coordinate visited.
;╗       Duplicate coord_list, and push to register 0.
╔        uniquify(coord_list)

⌠...⌡M   Map over the uniquified list. Call the variable j.
  ╜c       Push coord_list.count(j)
  2@%      Push count mod 2

Σ        Return the sum of this last list.

:11として書く以外4P、私はゴルフのアドバイスを思い付くことができません
リーキー修道女

1

C、203の 190 189バイト

#define S(s)1-(*s%11<7)*2<<*s%11%2*16
char*t,*u;P,p,r,L,e;
f(char*s){for(P=L=0,t=s;*t;++t){P+=S(t);e=r=1;for(p=0,u=s;u<t;u++)e*=(p+=S(u))!=P;for(p=P;*++u;r^=p==P)p+=S(u);L+=e*r;}return L;}

O(1)メモリアルゴリズムを使用したO(n ^ 2)。

すべてのポジションをループし、このポジションが先に発生するかどうかを確認し、そうでない場合、このポジションが偶数/奇数時間後に発生するかどうかを確認し、合計に追加します。


1

Perl、102 98 91 90(89 + -n)バイト

perl -nE '$i=ord()%5,$x+=(-1..1)[$i],$y+=((0)x3,1,-1)[$i],$p{$x,$y}^=1 for/./g;say~~grep$_,values%p'

読みやすい:

$_ = <>; # -n
for (/./g) {
    $i = ord() % 5;
    $x += (-1 .. 1)[$i];
    $y += ((0) x 3, 1, -1)[$i];
    $p{$x, $y} ^= 1;
}

say 0 + grep $_, values %p;
  • -4と-7に感謝します。

2
私が思う同じ投稿で「読みやすい」と「perl」を見るのは初めてです!
ダダ

もっと真剣に、素晴らしい答え。あなたが使用する場合には、まだいくつかのバイトを獲得することができますfor/./g代わりにwhile使用することを可能にする、ord()代わりにord($&)
ダダ

PPCGで数バイトを獲得できるその他のいくつかのこと:のsay代わりにprint-M5.010または-Eフリーであるため)を使用し-n、実行する代わりにフラグ(コスト1バイト)を使用し$_=<>ます。
ダダ

1

C#210 205 139 138 135 128 113バイト

using System.Linq;int f(string s,int x=0,int y=0)=>s.GroupBy(c=>(x+=c%6%3-1)+s+(y-=c/3%6-2)).Sum(g=>g.Count()%2);

説明

//Have X and Y as default params allows us to use a expression bodied member
//and then remove the return statement
int f(string s, int x = 0, int y = 0) =>

    //treat the string as a char array
    s.GroupBy(c =>

            //Using the unerlying int of the char this math reduces down to either x - 1, x + 1, x + 0, y - 1 or y + 1, or y + 0
            //Concat the resulting values with the original string to ensure uniqueness ie x=1 and y=11 vs x=11 and y=1 for the grouping
            (x += c % 6 % 3 - 1) + s + (y -= c / 3 % 6 - 2))

     //Mod 2 will return either 1 or 0 so we can use sum to count the groups with odd counts
     .Sum(g => g.Count() % 2);
  • 5つのバイトはスイッチング用VisualMelonに感謝CountしますSum
  • もう一度VisualMelonに感謝します。今回は、翻訳を取得するためにいくつかの派手な数学を提案することで、66バイトを費やしました。
  • VisualMelonは、13バイトの選択とグループ化を組み合わせて、別の2のx / yセパレータに入力文字列を使用するだけで、再び救助します

いいね...これが大好きです。Distinct()ではなく使用できませんGroupBy(z=>z)か?を使用することもできSum(g=>g.Count()%2)ます。これは常に0または1であるためです。
VisualMelon

また、できることを確認します(悲しいことに、私は好きです...)funcインデックスを次のようなものに置き換えます(x+=c%6%3-1)+"."+(y-=c%18/5-1)(charから計算した数値を愚かなモジュラスなどで追加するだけです)。私はテストしていませんが、壊れている場合は修正します;)これを台無しにしない限り、これは多くのバイトを節約するはずです!(そして、そこ式の安価なペアは無愛想であるが、これらは、私は最後の20分に思い付くことができるものばかりです)
VisualMelon

@VisualMelon Distinct()は、発生回数を表示するのではなく、各文字列の1つを返すため、動作しません(何かが不足している場合を除く)。
JustinM -復活モニカ

@VisualMelonは、合計を使用することをお勧めし、5バイトを節約しました。ファンクに関するあなたの提案については、投稿する前になぜそれが機能するのかを理解する必要があると思います。文字の基礎となる値に基づいて数値を選択するのですか?
JustinM -復活モニカ

はい、私は明確な考えていたかわからない...私はあまりにも怠惰な人間の明確な私が思う...エイ、愚かな式は、グループを使用して慣れているc%6%3-1だけでのASCII値をマップ<>v^する-1,1,0,0の変化(xノートゼロ値)および他の式は、同様の結果を生成しyます。おそらく、より良い表現があります(私はそれほど難しく見えませんでした)。これは私の最初の取り組みであり、おそらく何が起こっているかをより明確にします:((c<61?--x:c<63?++x:x)+"."+(c>95?--y:c>93?++y:y)しかし、明らかにかなり長いです!)
VisualMelon

1

Perl 6、47バイト

{sum bag([\+] (-i,*i...*)[.ords X%11]){*}X%2}

オンラインでお試しください!

  • (-i, *i, ... *)無限繰り返しシーケンスは-i1i-1、...
  • [.ords X% 11] 11を法として、入力文字列の文字の順序値でそのシーケンスにスライスします。
  • [\+] これらの値に対して三角縮約(または「スキャン」)を実行し、複素平面上で訪れた座標のリストを作成します。
  • bag()Bagこれらの座標を含むを作成します。各座標には、関連する多重度(リストに表示された回数)があります。
  • {*} バッグからすべての多重度を取得します。
  • X% 22モジュラス演算子を使用して、これらの多重度を数値と交差させ%ます。奇数の多重度はaになり1、偶数の多重度はaになり0ます。
  • sum それらの剰余を合計します。

1

Common Lisp198バイト 186バイト

溶液:

(let((p 0)(c 0)(h(make-hash-table)))(progn(loop for s across i do(incf(gethash(incf p(nth(position s "^>v<")'(1e3 1 -1e3 -1)))h 0)))(maphash #'(lambda(k v)(incf c(mod v 2)))h)(write c)))

それを実行します!

説明:

(let ((p 0)(c 0)(h (make-hash-table)))
  (progn
    (loop for s across i
      do(incf (gethash (incf p (nth (position s "^>v<")'(1e3 1 -1e3 -1))) h 0)))
    (maphash #'(lambda (k v) (incf c (mod v 2))) h)
    (write c)))
  • pは、文字列 "^> v <"内の文字のインデックスとして生成されるハッシュテーブルマップキーで、x、yを表す値1000、-1000、1 -1に再マップされます。(x軸は+ 1、y軸は+ -1000)
  • そのインデックスのハッシュ値は1ずつ増加します(スイッチカウンター)
  • ハッシュテーブルはループされたトラフよりも大きく、マップ関数は指定されたキーの値のモジュロ2として最終カウントをインクリメントします

注:i(入力)は、テストとして定義されています。

(defparameter i ">>><^>>>^vv><^^v^<<<>>^<>>^<^>^<<^^v^<v^>>^<<><<>^v<^^^vv>v><^>>^<^<v><^v<^<<^^v><>>^v<^>^v<vvv<<<v^vv>>^vv>^^<>>vv>^<^>vv<>v^<^v<^^<v^^^<<^><><>^v>vvv<^vvv<vv><vv<^^v^^<^^>>><<<>^<>>><^<<<>><>^v><^^vv<>>><^^^<^>>>>v<v^><<>v<v<v^<<^><v^^><>v>^<>^^^vvv<v^>^^^^v>v<v>>>v^^<v<vv>><<>^vv><<vv<<>^^v>>v<^^v>><v<v<<>^^vv>>^v>v>v<>^>^v<>>><>v>v<<v<^<>>>vv>>v>^<>vv^v><><^v^>v<^^>v<^v>>v^>^>>v>v>^>^<^^>vv>>^vv<^><>^><<v^<><<^<^>^^vv^<<^^<^^v<v<>^>v>>>>>>vv<<v>^>vv^>^><^<^^><<vvvv>vvv<><<><v^vv><v^^<>^>><^vv<><>^>vv>>>vv^vv<<^v^^<<v^^>^>vvv<><<v>^>^>v<v>^<^^^^<^>^>><>>^^vv<>v<^>v><v<v^>>v<^v<vv>v^>v<v^<^^^^v<^<^<<v<<<v<v^^>vv^>><<<v>>^^^>^<^>>>v^v><^^vv^>><^^vv<vv<v^><>>^><<<>>^^v^v<<v^<vv^^^>><>>^v^^^>>^>^<<^>v>^^v>><>v>^>vv^^<vvvv<><^v>^><<>>><^<^v^<<vvv^v<<<<<><><<><><<v>v<v>v><^v^^vvv>><>^>^>^v<<vv^^^v^vv><v><><v<v<<>>>v<^<^v<<>^v<<^v<><>v>>^^>^<v^<<^v^^^vv>><v^<v>^v><^<>>>>^^<vv<>^^>^>v^v^^>><>^^<^v^<v<<v<^<<^^vv>v>^<vv<<^^v^vv^>^^<>v>^>^<>vv><v>>><<><<vv^^<vv<>>^v>^<<vv>^><<>^<v>v><<v^<v<><v>^<^<^><^^^^>>>^<>^^><>>v^<vv^<^<<vvvv>>>v^v>>^>v^><<>>v<>>^>><vvvvv<<vvvv<v>^v<vv^<>><<><v^^<^<v>^v<^<<>^v<v^<>v<<>^<<vvv><^><^^^<>>v^<<>vv><^^^>><^>v^v>v<v^>>v>>v>vv<<v<<vvv^^^>^<v^^<^<v<^<>>v^<<v>>v^><v<vvvvv^^^<v^^<><v<<^>>^><^<v^v^^>><v><>v>^<vvvv><<v^^v^>^>v>><>^^v>v^>vv^>v<^<<^vv^>vv^<v>^<v^<>^v>v^>v^<<>^^<^>^^>vv^>>vv>v>vvv><>^v<<<<v^>v^^v<><v<v>^<^><^><<v<>><<>v^^>>><<><>>><<>><v^^>><^>><^<>v^^vvv>v<^<<vv^>vv^><<>v><>^<>v^^v>^>v^<>^><v>^><<^v<v^^<v>><^^>>^<^<^v<v>^>^<^<v><><>>>><>^<^<v>v<v^>v><>v^>v^<<><^<>>v<^vv^^^>^<<<<>^>^<><^vvv>^^<v^v>v>v^v>v>>vv>^><>^vv>^<v<v^<>vv^<v<><>^>>vvv><>>^<<v^<<>^<v^>v<^^^<^<^^<>^>>v>^<v>vv<v^^>><<<<<>>v>^v>^>>>>v>>^^>^<<<^<<<v>>^><<<<^vv<<>^v<^>v^<v<<>v<>^<^<^<^<>>^^^vvv<v>^vv>^><^<v^>^v<v>><><vvv<^^>>v<^v>^>>>><v^<v^^<^^v<vvv<v>^^<<>><^<v^v<^vv>v>vv>^^<>^^^^>>^v><vv<<<v>^v^>>v^>><<<^v^v<<>><<vvvvv<v^vv>vvvv><v^v<^^^><vv^^<>><>><^>^^^^v>v><><v^<>^v<>^^<^^>^^^vvv>>vv^v^<v<vv^v>v>>>^v^^vv^<^v>v^v>>^v>v<v^<^^><vvv>><<>><>><v>v<^<v>>>>v^^v^^>^><<v><^<<>>v<>^^<<>vv^>>vv^^^v>>>^v^><v<<^>v<v><>>>^>>^<<>>^><<vv<^^>^^^v^^<>>>vv><<>v<><<<>v<<>>>v<>v<>^<vv^v<^^<<<v>^v>>^^>^><<^vv<><><>v>^v>^<>v>>^^^<^^>>vv>v<<<v^><<v><^v><>v<^<<^<>^vv>^><^^^^^<<v^^<>v>><^<v^^^vv>^v<>^<v<v>v>^><^<<^<>><^^>vv^<>^<>vv<>>v<vv^>><^^<^>v<><>vv<v<>>v><v^^^>^^^<<vv^><^^v>v>^<^>v^><<vvv>v^><vv<><^<><^>^v<><<v^<<><>^^^^<<^>>^>^v^>v>^<<^>vv^vv^v<>^<<^>v<^^<<v<v<<<^>vv^>><>v>><><v>v><v^><vvv>vv<<vvv>v^<<^v<^<><<^v>v<>>vv<<v^>v>v<<>>^vv^<^^^<^v>>^<vv>^<v>><>v>^^<<v^<>>>>>v^v>><>v^>>^<>>^<^vvv^^^<^v<><vvv^>^>v><<v>>^v>v<v>v^<v>v>^<>vvv>vvv^^<>vv>^^^^^>v<<^v<>>>><<<>>><vv>>^v^^v<v^>>>^>^v<^v>^v<>vv<><vvv^v<<<<v<vv>vv^<^vvv<^v>v^^vv<^>>>^^>>^^><>^>>v<>>>^^<<v<^<<<<<^^<v^^^<<>><<<^>^v^>vv<>>>^^v><<>^^^^<vvv><^^<>>>^><<^>><v>^<>^v^<vvvv^>>^><<>><^<v^>>vv^vv<^>>>><^>^v<^<v<^^<^<^><^<>>^<>v^v<<>v>v<>><<v<^v<<<^v<v<>><v<^<^>>v>v>><v^<v><>>>>>v^v>><^<^<v>><v^v>v<>v<v><<<>^^><>^^<^vv^^<>v><><><^>^^v^vv^<><>>>>v><>>^>^<<^<v<v^>v^^<v>>><<^^vv^^>><<^<vvvvv>><^>^>>^vv<><<>v>v^<<<^v<^^<<^vv>v<vvv><^v>vv^vvvv<^>^v^<<<<^v<<<>^vvv>^v><<>>v<v<^v^<>v>>^^v^vv>>>^v^^>>^<><><<<<^vv>>>>>v>v^>v<>><<<>^vv>^^^^<^^^>^^^^>^^^v^v><^>^>>>v<v<^<^^<<^v<<^<>vvv^^^^v^<<>vv>^^>>><^^v<^<<<v<>v<<><>v<><>^<v<<^>^^>><<v>^^><^^v<^<v^<^^<>^<>^v^>>^^v^v^<>v<>^<<<>^v^v>^<vvvv<>v<<>vv^<<>vv>>>>^<v><>>>v^><<>^v>><<>>^^v><^<>>vv^^^>vv^<^^v><v>>vvv^v<^v>v<<^^<>v^^^v^^>><v^>>v^v^vv<^>v^<^>^>v<v^><vvv^>^<>v<<^><^^<vv>v>>vv>v^>>^vvv>>v^>^^>vvv>>v><<>>^^v>v<v<><<<<^^v<^<>^v>><v^^^<>>vvv>v><<v>^^<^vvvv^v>v>^vv>^vv^^v><<>>^^>>v>>>^v><^>v<^^<>vv>v>v^^^>>^^^><<<<>>^>>^<^v<^<^<>^><v<<v>v<>^>>^<<v^^<v^vvvvv>>v^>>^^^<^^<><<><><>^v>vvv^>^^>v<^^>^<<^v^^^><>><<v<^^^<<<<>><>><<^^v><v^<<^v<v><<>^<v>^>^v>vv>><v^<^<v<v<v><^^^^>>><^<><^v^v<<<^>vv^<v^>^^v^>>><<<<^<>>><v>>>vv^>^^<v^v>>>v^<^<>vv>^v^^><<<v>v>v>><>>>v<^>^<>>^^<v^<<^<v^>><^v^><><v><><v^vvv<<>v>>><<><v>v<>>><^<^^v<v>^<<>^v>^>^>^^<^^><^>>>>><^^>vv>^<^^<><^>^<^^><^<v>v^>><^>^^^>>v^v<^>>^<v^<>^><><v>>^v<v^^^^v<^vv><^v>>^^^<>^<^<^>vv^v<<>vv>^<>v>^>^>vv^v<vv<^^^v<v>v>v^<^^^v><v<<<^^<><^^>>>><<^^v<<^>v<<vv^^^vv^vv^<v><>^v<v>>><vv^v<v^>>>>^<<<vv^>>v>^><<><<^<^><<vv^>v^>><>v^<<<>v^><>><<>>v><>v^<v><>^v>>><><>>>^vvv^v>vv>>>^^v^><<v<>>^^^v^^><<^v<><><v<<v<v<><<<v^<^^^<>v^^v<^^<<^>v<<v><^<<<<>><>^v>^<>^<^^v^vvv>^^<>^>><v^^vv^<>^<><<^^^v<^^^>>^^v>^>^<^>v><<^<>^v<><vv^vv<><<<<<<v<<v<<vv^<<^<^vvvv><v^v^v<>>>vvvvv^<vv^<^<>vv>^<><<v><>v^^<v<>>>vvv^><^<^>v^^<v>^<>>>^^v^<vv<<<<^><v<<<>v<<<v<>>^^^>^><>v>^v^>^<v^^><^v^^<^v^^>^v>>^^^<<><><<<>v>><^><>>>vvvv>v>>v>^^^^v<><vv<^<v^v>>^^vv<^>vvv>^v>>><v<v<v^<^>^^<vvv<vv<v>>^vv>^<<^<^<v>v^<vv^^^v>vv<v><v><v>^<v>>vv<>v>^^>v^^^<>v<>v^v<>^<><v><^>^<v^v><<^v^v^v<<v><<^^<^vv>^<^v><>v>><v^v^>><><><<<v<>v<^vv>v<v<<>^vvvvv^<<<^<vv><<><>v^<^v<<<^>v>v<v^<<^>v<<^<v><<<^>vv>v>^<^^v>>>><>vv>>vv>vvv<>^^<>^v^<>vvv<^^^vv>v><<<<vv^v><v^<^<<<><v<>^><<>^>v<^^<<>v>>v<<>><^^<<<^<^vv^^>v>v<>^^>>^v^vvv>^v^>v>>v>v>v>>vv^<><<<<>v^^>vv<^^v>>v<vv<^>>^<>^^v<><vv^<><v><v<<v^v<^^<^v^v<>v<<><vvv><<<^<^^<<>>^v>>>^v>>>v<>>^><<<><><<<v<vv<^<>v^^v^^>^<<^^^v^>^<<^>^>^>>>>v<v<v<>vv<<vv^<<^<vv>^^<^<<>><^v><><>^<v><v^>^v>^<^>^^><v><<^<v^^<<^><><v>v<>>><<^><v<^vvv^<<<>><<>^v^^><vv>vv<>^>^>vv<>v^<^<>vv><<>^<v<vv<^<^<><^vv<<^>>>v<>><<>>>^^^^<<^v>>v<vv>^^>v<v<vv^><<><>>>v>>^^v<^v^^>>v^<>>v^>><^<^^v<v<><<><>>^<>><^v<^^^^><>^>vv>>^vv<<>v<<<<<<><<<><<>><v><^^^<>>v<^><^vvv<>^>^^v>^<v><^v^vv^<<>v<<<<v>^vv>>v>vv<<^>^<>>vvv^<v<><>><>^^^^vvvvvvv<<>v<^><^^>vv^^<v<<^^<vvv<v<v<<>><<><v^^>><^<>^v^vv<<v<v<>><<>>>>>^vv<><v<>v><v>v>><v<v^vvvvv<><>v>>v<><<<^^<>^<^^<v>v^<vv>^vv^<>^<<^<vv><v<v>>v>^<>v^<<v^<v>^v<>><v>>>>^<<^^^v<^<>><^<><v>>vv^>^<^<^>>v^>^^^^>vvvvv>^v<^><^^<^^>^<^^^^^^^>v>>vv>v^^^v^^^<>v><^>>>v>^>^>^>vv<vv<^^>>^>>>v<>v><<^<<v^>^>>>>^^><^^<v<<<<>>v>v^v^^<>><v<^<<<<v^^^^<v<<<^>v>^^<vv<^^^^^v>^v^<v><>>^^>^v>^>^vv^v>v>v^>v>^>>^^^^>>^>>^><>><v>v>>><<^v^v^>^>^>>vv><<^>v<v<v^<<>>^v<<^v<<^><^>>^<v>^>vv>v>^^^>v^^<^<^^>vv>^^><v>>^v>^v<<^^^<<^v^>^<<^>vv^>>^<^v><<>v><^^^<^^>>vv>^vv>><^<<<^>vv^v>v<^<<<^<^<<><^^>>>v^<^^^>^<><^v>>^<<v<^v>>v^<^<^<^^^<v^><<vvv^<^v^vv^vv<v<<v<^<>^v>^^^<^^v<v<v><<<^<>^^^^v>v^v^v^v<v><v>>^v><vv^^^v>><<v^vvvv<<<^v<<><^>^<v^^v<>vvvv^vv<>^v<><>^^<>>vvv<^>><v^<<>v>v<>^v^>v^>><<>>^^<^v<>>^>^><>>^<v<v^^<^v><v^<v<><><^<<><v^v<<>vv<v<v<^>>><>vv^^<><<v<^^<<^<><^^^>^>>>^<^>>>^>><^^^<^v^^^v^v^v>v>v><vv>><vvv<<v><><^^>^v<v>><v><^><^<<>v^vv^v><^vv>^>>v<vv><^<^^v<^^vv<vv<v<v>v><v<vv<<>^^v^^v<<<^<>v^^^<><>>><^>v^^^v^vv<<<^>>v><^>v^<>>>>^<>^^vvv^^<><^>^^<><>^vvv^^<vv^>vv^^^^v<>vv<^^^v<<>><<vvvvv>v>^^^vv>><v><v<>vvvv<v^><^<>^>^<>v>v>v^vvvv<><^v>>>^^>><vvv<>^>^v^<vvv>v^vv^vv><>><>v^^v^vv<^v>vv>>v<v><^<<^v<>>^vv^<v>v><v>v>^v>^<v>^<<^>vv>v<^<^vv^<^><<<v<<^^vv<vvv><>v>v<vv^<><><^vvv>>vv<^^^v><^v><<^>^^v>^<>><v<>>^^<<<v><>^>^><vvvv<>^<<<><<<^<>>v^vv^>><^vv^^>^<v^<v>><^^>>>^v>^v<>^v<><^><vv>v^^^<^>>^<<^<^><<<^^<v<<^vv<^<>v<^<<^^<v<vv<<><v<v^<>^<>v>>v<^v>v<>^^vvv<>vv^v^<><v^vv^<^v^v><>^><v^<>>^^^<>>vv^<v>^^v><v<^>^^^^^^><>>vvv<<><><v<^>v<>v^v<<<<>v^>>>>^v>^^<v^>v><v^<^^v<<<<v<<<>^v<^>^v>v^^>v^^vvv>vv<>^>v><v<>^<vv><>>><<^>>><<v>v^^<^<<<<v^<>>>v<<<^v^vv<>^v>v<<<<>^^>><v><>v<v><^^>><>^>^>v>>><v>^vvvv<><><^>>^v^><<>^v<><><^><<<>v^^>v>^>v^<v^vv<>><^vv^^>^^><vv<<>v>v^^>><v^>^<^<>>>vv<>^>v>v^<>v<^<<v>>>^<>v^>v>>vv^^<>>v<v<<^<>v>v^<^^^>v^^>v>v>vv<^<v>v^^><<<v<><>^^<>v>v>^^v>v>v^v>>^<v^v>><>^^>^<>>>^vv^><v^<^>v^>^v><^>^^^vv^^v<>vv<>>^><<^v>^v^>>v>^v^<<^^^vv<<vvv>^vv^v<<<v^^<<><vv<>>^^vv>^^^vv>><><v>v<^v^>>>vv^><>><v<^v<>^><v<^^^^>><^<>v>^v<^vv>v>v<^<>v>v>^<vv>v<^>vvv<v^<vv<vv<>v>^><v^v<>>>>>v>><^v<>v>^v><v^v^vv<>^<vvv^>><v^<vvv^^<^vvv^v^<>><v>v^^v<><>v^^^v<<<^><v<<<>><<vv<<><vvv^v>>v^v<v^>>><<v<>^v><>vv<<v>v^vv>v^v<^<vv<><><^v>^<vv>v^^>>^^^><vv<><^>>>^<v^<<^^>^>vv^><v<vvv>^^>>>^><<vv>vv>^<>>^^><^v><<>^<<<v^>^")

これは、1を増やすことは、右に1000回進むことと同等であることを意味しますか?私はx / yを単一の次元に圧縮するというアイデアが好きなので、私はそれを(99 1 -99 -1)
つかむつもり

@streetster正しい、それがアイデアです。x / yを1dに圧縮します。ここで、yはxに干渉しないようにバッファーが必要です。(はい、実際には衝突する可能性があります-したがって、大きなギャブ、チャンスが少ない-したがって、実際には1000(1e3)を使用しているので、999は同じバイト長になります)。
デビッドホラーク

1

K(oK)37 29 27バイト

溶液:

+/2!.#:'=+\-99 0 99 -1 1@5!

オンラインでお試しください!

説明:

mod 2が0の場合はオフ、それ以外の場合はオンの場合、ステップのリストを作成し、パスを作成し、グループ化し、各繰り返しをカウントします。非常にAdventOfCodeのように感じました。

+/2!.#:'=+\-99 0 99 -1 1@5! / the solution
                        5!  / input mod 5, "^v<>" yields 4 3 0 2
           -99 0 99 -1 1    / left, null, right, down, up
         +\                 / sum along
        =                   / group into key=>value
     #:'                    / count each value
    .                       / take the value 
  2!                        / modulo 2
+/                          / sum up

ノート:

  • xyをxに押しつぶすDavidHorákの方法を盗んで-8バイト(制限があることは知っていますが、例では機能します)
  • ngnのおかげで-2バイト

1
1 -1 -99 99"^v<>"?->-99 0 99 -1 1@5!
ngn

+/2!.#:'->+/~=/'^
ngn

1
最初のコメントは-2に対して機能し、2番目のコメントはエラーをスローします...何をしようとしてい^ますか?
ストリートスター

私の間違い。「ヌルですか?」として使用したかった dictの値(それらをすべて0にする)ですが、明らかにoKはそのようには機能しません:(
ngn

ええ、悲しいことに、nullではなく^を「
除外

0

krrp、137バイト

^>:\L\T[length],^v>xy:!tTxy!V?[elem]tv[without]vLtELtv?#?E>V!c#!f>?=c$62.@V#!r>+x1y?=c$60.@V#!r>-x1y?=c$94.@V#!r>x-y1@V#!r>x+y1.LT00E>00.

オンラインでお試しください!


説明

^>:\L\T                ~ lambda expression, import list and tuple module
 [length],^v>xy:       ~  the answer is the number of lattice points
                       ~  which were visited an odd number of times
  !tTxy                ~   current lattice point 
  !V ?[elem]tv         ~   if the lattice point is already present,
      [without]vLtE    ~    remove it, else
      Ltv              ~    add it
  ?#?E> V              ~   no further moves
  !c#!f>               ~   move character
  ?=c$62. @V#!r>+x1y   ~   move right
   ?=c$60. @V#!r>-x1y  ~    move left
    ?=c$94. @V#!r>x-y1 ~     move up
     @V#!r>x+y1        ~      move down	
 .LT00E>00.            ~ initialize at point (0, 0)

オンラインでお試しください!

残念ながら、krrpには実装がかなり遅いため、長いテストケースの検証が困難です。
krrp文字列変換


0

APL(Dyalog Unicode)21 20バイトSBCS

+/≠/×⊢⌸+\0j1*'^<v'⍳⎕

オンラインでお試しください!

使用する ⎕io←1

入力

'^<v'⍳間の各入力文字のインデックスを見つける'^<v'すなわち、^1となり、<2、v3、及び他の何か4

0j1* iのべき乗(虚数定数)

+\ 部分和

⊢⌸各行が一意の部分和のオカレンス(インデックス)のリストである行列。長方形にするために0でパディング

× signum-すべてのインデックスは1になり、パディングは0のままです

≠/ 各行のmod 2の合計

+/


0

ルビー、67バイト

orlpのCソリューションに触発されました。訪問したすべての位置のリストを作成し、一意の位置ごとに((d&d)バイトを1つ節約するため集合ワイズ交差を使用してd.uniq)、オカレンスの数が奇数のものをカウントします(技術的には、オカレンス%2にマップし、それらを合計します、それは同じことをするので)

->s,q=0{d=s.bytes.map{|c|q+=1i**(c%11)}
(d&d).sum{|c|d.count(c)%2}}

オンラインでお試しください!

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.