Java (tanpa regex), 413 412 246 242 212 211 209 198 byte
Bersaing dalam tantangan golf menggunakan java kurang masuk akal daripada ikut serta dalam balap Formula 1 dengan sepeda, tapi saya tidak selalu melakukan pemikiran yang masuk akal.
Ini adalah solusi java saya yang sangat panjang versi Golf
boolean l(char[][]w){int[]t={},l={};for(int y=0;y<w.length;y++)for(int x=0;x<w[0].length;x++){if(w[y][x]=='O')t=new int[]{x,y};if(w[y][x]=='<')l=new int[]{x,y,1};if(w[y][x]=='>')l=new int[]{x,y,2};if(w[y][x]=='v')l=new int[]{x,y,3};if(w[y][x]=='^')l=new int[]{x,y,4};};return(l[2]==1&&l[1]==t[1]&&l[0]>t[0])||(l[2]==2&&l[1]==t[1]&&l[0]<t[0])||(l[2]==3&&l[0]==t[0]&&l[1]<t[1])||(l[2]==4&&l[0]==t[0]&&l[1]>t[1]);}
dan ungolfed
boolean l(char[][] w) {
int[] t = {}, l = {};
for (int y = 0; y < w.length; y++)
for (int x = 0; x < w[0].length; x++) {
if (w[y][x] == 'O')
t = new int[] { x, y };
if (w[y][x] == '<')
l = new int[] { x, y, 1 };
if (w[y][x] == '>')
l = new int[] { x, y, 2 };
if (w[y][x] == 'v')
l = new int[] { x, y, 3 };
if (w[y][x] == '^')
l = new int[] { x, y, 4 };
}
;
return (l[2] == 1 && l[1] == t[1] && l[0] > t[0])
|| (l[2] == 2 && l[1] == t[1] && l[0] < t[0])
|| (l[2] == 3 && l[0] == t[0] && l[1] < t[1])
|| (l[2] == 4 && l[0] == t[0] && l[1] > t[1]);
}
Sepertinya seluruh konsep saya salah, ini solusi saya yang lebih pendek
boolean z(char[][]w){int x=0,y=0,i=0,a=w.length,b=w[0].length;for(;w[y][x]!=79;)if(++y==a){y=0;x++;}for(;i<(a<b?b:a);)if(i<b&w[y][i]==(i<x?62:60)|i<a&w[i][x]==(i++<y?'v':94))return 1<2;return 1>2;}
dan versi yang tidak serigala
oolean z(char[][] w) {
int x = 0, y = 0, i = 0, a = w.length, b = w[0].length;
for (; w[y][x] != 79;)
if (++y == a) {
y = 0;
x++;
}
for (; i < (a < b ? b : a);)
if (i < b & w[y][i] == (i < x ? 62 : 60) | i < a
& w[i][x] == (i++ < y ? 'v' : 94))
return 1 < 2;
return 1 > 2;
}
EDIT
Saya menulis ulang kode untuk mencari 'O', sekarang ini berisi loop tunggal jauh lebih pendek, dan saya juga menggunakan saran @Frozn untuk mengganti beberapa karakter dengan nilai ascii mereka.
Hasilnya, 30 byte lainnya menggigit debu.
Saran lain dari @Frozn, dan kami beberapa byte lebih dekat ke solusi Python
Satu lagi tulis ulang satu putaran, dan gabungkan dua pernyataan if