class Main{
static java.util .function .Function < byte [ ] [ ] , java.util .function .Consumer < byte [ ] >> f =
m
-> i
-> { int l
= 0 ,M
= 30000 ,x
= 0 ,y
= 0 ,p
= 0 ,d
= 0 ,c,I
= 0 ,q
; for ( var r
: m
) l
= ( q
= r.
length ) > l
? q
: l
; for ( var t
= new byte [ M
] ;; d
= ( q
= ">^<v?" .
indexOf ( c
) ) < 0 ? d
: q
> 3 ? t
[ p
] != 0 ?- ~d
% 3
: d
: q,p
+= c
== 91 ? 1 : c
== 93 ? M
- 1 : 0 ,t
[ p
%= M
] -= c
> 42 & c
< 46 ? c
- 44 : 0 ,
System .
out .
print ( c
== 46 ? ( char ) t
[ p
] : "" ) ,y
+= d
% 2
- d
% 3
% 2
* 2 ,x
+= 3 %- ~d
- d
- ~d
% 2
) if ( ( c
= x
< l
& x
>= m
[ y
] .
length ? 0 : m
[ y
] [ x
] ) == 44 & I
< i.
length ) t
[ p
] = i
[ I
++ ] ; }
;
public static void main
( String [ ] a
) { test( "v >]++]+++]+++]+[[[[-v\n " +
"v >[v\n " +
"v >]++++>?]+]+]-]]+>?[ -v\n " +
">++++++++>?]].]- --.+++++++ .. + ++. ]].[-.[.+++.------.--------.]]+.]++.\n " +
" ^ <\n " +
" ^ <\n " +
" ^ <" ) ;
test( "v >-v\n " +
"v >.>?, v\n " +
">,>?\n " +
" ^ <\n " +
" ^ <" , "This is a test" ) ;
test( "v >-[v\n " +
"v >->?]] +[v\n " +
"v Some >-[++++]v\n " +
"v rubbish >-[[. +]]v\n " +
"v text! >-v\n " +
"v >-]]++++>?[>?++++ +++ +++.>?[ v\n " +
">]->?] -]+ ++ +++>?\n " +
" ^ <\n " +
" ^ <\n " +
" ^ <\n " +
" ^ <\n " +
" ^ <\n " +
" ^ <" ) ;
}
static void test
( String program
) { test( program, "" ) ;
}
System .
out .
println ( "2fuck program: " ) ; System .
out .
println ( "Inputs: " + inputs
) ; System .
out .
println ( "Output: " ) ; try { f.
apply ( program.
lines ( ) .
map ( String :: getBytes
) .
toArray ( byte [ ] [ ] :: new ) ) .
accept ( inputs.
getBytes ( ) ) ; } System .
out .
println ( "\n " + "_" .
repeat ( 100 ) + "\n " ) ; }
}
Y2xhc3MgTWFpbnsKICBzdGF0aWMgamF2YS51dGlsLmZ1bmN0aW9uLkZ1bmN0aW9uPGJ5dGVbXVtdLCBqYXZhLnV0aWwuZnVuY3Rpb24uQ29uc3VtZXI8Ynl0ZVtdPj4gZiA9CgptLT5pLT57aW50IGw9MCxNPTMwMDAwLHg9MCx5PTAscD0wLGQ9MCxjLEk9MCxxO2Zvcih2YXIgcjptKWw9KHE9ci5sZW5ndGgpPmw/cTpsO2Zvcih2YXIgdD1uZXcgYnl0ZVtNXTs7ZD0ocT0iPl48dj8iLmluZGV4T2YoYykpPDA/ZDpxPjM/dFtwXSE9MD8tfmQlMzpkOnEscCs9Yz09OTE/MTpjPT05Mz9NLTE6MCx0W3AlPU1dLT1jPjQyJmM8NDY/Yy00NDowLFN5c3RlbS5vdXQucHJpbnQoYz09NDY/KGNoYXIpdFtwXToiIikseSs9ZCUyLWQlMyUyKjIseCs9MyUtfmQtZC1+ZCUyKWlmKChjPXg8bCZ4Pj1tW3ldLmxlbmd0aD8wOm1beV1beF0pPT00NCZJPGkubGVuZ3RoKXRbcF09aVtJKytdO30KCjsKCiAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW11hKXsgICAgCiAgICB0ZXN0KCJ2ICAgICAgICAgICAgICAgID5dKytdKysrXSsrK10rW1tbWy12XG4iKwogICAgICAgICAidiAgICAgICAgICAgICAgICAgICAgICAgICAgID5bdlxuIisKICAgICAgICAgInYgICAgICAgICA+XSsrKys+P10rXStdLV1dKz4/WyAtdlxuIisKICAgICAgICAgIj4rKysrKysrKz4/XV0uXS0gLS0uKysrKysrKyAuLiArICsrLiBdXS5bLS5bLisrKy4tLS0tLS0uLS0tLS0tLS0uXV0rLl0rKy5cbiIrCiAgICAgICAgICIgICAgICAgICBeICAgICAgICAgICAgICAgICAgICAgIDxcbiIrCiAgICAgICAgICIgICAgICAgICAgICAgICAgICAgICAgICAgICBeICA8XG4iKwogICAgICAgICAiICAgICAgICAgICAgICAgIF4gICAgICAgICAgICAgICAgICAgPCIpOwogICAgdGVzdCgidiAgICAgPi12XG4iKwogICAgICAgICAidiAgPi4+PywgdlxuIisKICAgICAgICAgIj4sPj9cbiIrCiAgICAgICAgICIgIF4gICAgICA8XG4iKwogICAgICAgICAiICAgICBeICA8IiwgIlRoaXMgaXMgYSB0ZXN0Iik7CiAgICB0ZXN0KCJ2ICAgICAgPi1bdlxuIisKICAgICAgICAgInYgICA+LT4/XV0gK1t2XG4iKwogICAgICAgICAidiAgICBTb21lICAgICAgICAgICAgICAgICAgPi1bKysrK112XG4iKwogICAgICAgICAidiAgICBydWJiaXNoICAgICAgICAgICAgICAgICAgPi1bWy4gK11ddlxuIisKICAgICAgICAgInYgICAgdGV4dCEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4tdlxuIisKICAgICAgICAgInYgICAgICAgICAgICAgICAgID4tXV0rKysrPj9bPj8rKysrICsrKyArKysuPj9bIHZcbiIrCiAgICAgICAgICI+XS0+P10gLV0rICsrICsrKz4/XG4iKwogICAgICAgICAiICAgICAgICAgICAgICAgICBeICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFxuIisKICAgICAgICAgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXiAgPFxuIisKICAgICAgICAgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXiAgICAgICAgIDxcbiIrCiAgICAgICAgICIgICAgICAgICAgICAgICAgICAgICAgICAgIF4gICAgICAgIDxcbiIrCiAgICAgICAgICIgICBeICAgICAgICAgPFxuIisKICAgICAgICAgIiAgICAgIF4gICA8Iik7CiAgfQoKICBzdGF0aWMgdm9pZCB0ZXN0KFN0cmluZyBwcm9ncmFtKXsKICAgIHRlc3QocHJvZ3JhbSwgIiIpOwogIH0KCiAgc3RhdGljIHZvaWQgdGVzdChTdHJpbmcgcHJvZ3JhbSwgU3RyaW5nIGlucHV0cyl7CiAgICBTeXN0ZW0ub3V0LnByaW50bG4oIjJmdWNrIHByb2dyYW06ICIpOwogICAgU3lzdGVtLm91dC5wcmludGxuKHByb2dyYW0pOwogICAgU3lzdGVtLm91dC5wcmludGxuKCJJbnB1dHM6ICIraW5wdXRzKTsKICAgIFN5c3RlbS5vdXQucHJpbnRsbigiT3V0cHV0OiAiKTsKICAgIHRyeXtmLmFwcGx5KHByb2dyYW0ubGluZXMoKS5tYXAoU3RyaW5nOjpnZXRCeXRlcykudG9BcnJheShieXRlW11bXTo6bmV3KSkuYWNjZXB0KGlucHV0cy5nZXRCeXRlcygpKTt9CiAgICBjYXRjaChBcnJheUluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24gZSl7U3lzdGVtLmVyci5wcmludGxuKCJTdG9wcGVkIHdpdGggZXJyb3I6ICIrZSk7fQogICAgU3lzdGVtLm91dC5wcmludGxuKCJcbiIrIl8iLnJlcGVhdCgxMDApKyJcbiIpOwogIH0KfQ==
stdout
2fuck program:
v >]++]+++]+++]+[[[[-v
v >[v
v >]++++>?]+]+]-]]+>?[ -v
>++++++++>?]].]- --.+++++++ .. + ++. ]].[-.[.+++.------.--------.]]+.]++.
^ <
^ <
^ <
Inputs:
Output:
Hello World!
____________________________________________________________________________________________________
2fuck program:
v >-v
v >.>?, v
>,>?
^ <
^ <
Inputs: This is a test
Output:
This is a test
____________________________________________________________________________________________________
2fuck program:
v >-[v
v >->?]] +[v
v Some >-[++++]v
v rubbish >-[[. +]]v
v text! >-v
v >-]]++++>?[>?++++ +++ +++.>?[ v
>]->?] -]+ ++ +++>?
^ <
^ <
^ <
^ <
^ <
^ <
Inputs:
Output:
!"#$%&'()*+,-./
0123456789:;<=>?
@ABCDEFGHIJKLMNO
PQRSTUVWXYZ[\]^_
`abcdefghijklmno
pqrstuvwxyz{|}~
____________________________________________________________________________________________________
stderr
Stopped with error: java.lang.ArrayIndexOutOfBoundsException: Index 73 out of bounds for length 73
Stopped with error: java.lang.ArrayIndexOutOfBoundsException: Index 10 out of bounds for length 4
Stopped with error: java.lang.ArrayIndexOutOfBoundsException: Index 49 out of bounds for length 19