class Main{
interface N{
}
static N m =
// The actual code:
s
-> { s
+= " " ; String r
= "" ,t,y,z
[ ] = "ONE TWO THREE FOUR FIVE SIX SEVEN EIGHT NINE" .
split ( " " ) ; for ( int i
= 0 ,j,l,b
; i
< 9 ; ) { for ( j
= b
= 0 ; j
< ( l
= ( y
= z
[ i
] ) .
length ( ) ) & s.
length ( ) > 3 ; b
+= s.
substring ( 0 ,l
) .
split ( t
= "" + y.
charAt ( j
++ ) ,
- 1 ) .
length == y.
split ( t,
- 1 ) .
length ? 1 : 0 ) ; if ( b
== l
) { s
= s.
substring ( l
) ; r
+= i
+ 1 ; } else i
++; } return r
; }
;
public static void main
( final String [ ] a
) { final Main m = new Main( ) ;
System .
out .
println ( m.
m .
c ( "NEO" ) ) ; System .
out .
println ( m.
m .
c ( "ENOWOT" ) ) ; System .
out .
println ( m.
m .
c ( "EONOTWHTERE" ) ) ; System .
out .
println ( m.
m .
c ( "SNVEEGHEITNEIN" ) ) ; System .
out .
println ( m.
m .
c ( "ENOOWTEERHTRUOFEVIFXISNEVESTHGIEENIN" ) ) ; System .
out .
println ( m.
m .
c ( "NOEWOTTOWHEERT" ) ) ; }
}
/**
Ungolfed and explanation:
s->{ // Method with String as parameter and return-type
s+=" "; // Append 3 spaces, to prevent an StringIndexOutOfBoundsException when checking i.e. "THREE" of length 5, on a length 3 input
String r="", // Result-String
t,y, // Temp Strings
z[]="ONE TWO THREE FOUR FIVE SIX SEVEN EIGHT NINE".split(" ");
// String-array of "ONE" through "NINE"
for(int i=0,j,l,b;i<9;){ // Loop (1) from 0 to 9 (exclusive)
for(j=b=0; // Set `j` and `b` both to 0
j<(l=(y=z[i]).length()) // Inner loop (2) over the characters of the current String-representation
&s.length()>3; // and as long as the remaining input-String is at least of length 3 (or 0 if we exclusive the three spaces)
b+= // Raise `b` by:
s.substring(0,l).split(t=""+y.charAt(j++),-1).length==y.split(t,-1).length?
// If the amount of occurances of the current character in both Strings is the same
1 // Raise `b` by 1
: // Else:
0 // `b` remains the same
); // End of inner loop (2)
if(b==l){ // If `b` now equals `l`, which means it matches the current String-representation
s=s.substring(l); // Remove this substring from the input
r+=i+1; // And append this number to the result-String
}else // Else:
i++; // Raise `i` to go to the next number
} // End of loop (1)
return r; // Return the result-String
} // End of method
**/
Y2xhc3MgTWFpbnsKICBpbnRlcmZhY2UgTnsKICAgIFN0cmluZyBjKFN0cmluZyBzKTsKICB9CiAgCiAgc3RhdGljIE4gbSA9IAogIAovLyBUaGUgYWN0dWFsIGNvZGU6CnMtPntzKz0iICAgIjtTdHJpbmcgcj0iIix0LHkseltdPSJPTkUgVFdPIFRIUkVFIEZPVVIgRklWRSBTSVggU0VWRU4gRUlHSFQgTklORSIuc3BsaXQoIiAiKTtmb3IoaW50IGk9MCxqLGwsYjtpPDk7KXtmb3Ioaj1iPTA7ajwobD0oeT16W2ldKS5sZW5ndGgoKSkmcy5sZW5ndGgoKT4zO2IrPXMuc3Vic3RyaW5nKDAsbCkuc3BsaXQodD0iIit5LmNoYXJBdChqKyspLC0xKS5sZW5ndGg9PXkuc3BsaXQodCwtMSkubGVuZ3RoPzE6MCk7aWYoYj09bCl7cz1zLnN1YnN0cmluZyhsKTtyKz1pKzE7fWVsc2UgaSsrO31yZXR1cm4gcjt9Cgo7CiAgCiAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oZmluYWwgU3RyaW5nW10gYSl7CiAgICBmaW5hbCBNYWluIG0gPSBuZXcgTWFpbigpOwogICAgU3lzdGVtLm91dC5wcmludGxuKG0ubS5jKCJORU8iKSk7CiAgICBTeXN0ZW0ub3V0LnByaW50bG4obS5tLmMoIkVOT1dPVCIpKTsKICAgIFN5c3RlbS5vdXQucHJpbnRsbihtLm0uYygiRU9OT1RXSFRFUkUiKSk7CiAgICBTeXN0ZW0ub3V0LnByaW50bG4obS5tLmMoIlNOVkVFR0hFSVRORUlOIikpOwogICAgU3lzdGVtLm91dC5wcmludGxuKG0ubS5jKCJFTk9PV1RFRVJIVFJVT0ZFVklGWElTTkVWRVNUSEdJRUVOSU4iKSk7CiAgICBTeXN0ZW0ub3V0LnByaW50bG4obS5tLmMoIk5PRVdPVFRPV0hFRVJUIikpOwogIH0KfQoKLyoqClVuZ29sZmVkIGFuZCBleHBsYW5hdGlvbjoKCnMtPnsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE1ldGhvZCB3aXRoIFN0cmluZyBhcyBwYXJhbWV0ZXIgYW5kIHJldHVybi10eXBlCiAgcys9IiAgICI7ICAgICAgICAgICAgICAgICAgICAgIC8vICBBcHBlbmQgMyBzcGFjZXMsIHRvIHByZXZlbnQgYW4gU3RyaW5nSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiB3aGVuIGNoZWNraW5nIGkuZS4gIlRIUkVFIiBvZiBsZW5ndGggNSwgb24gYSBsZW5ndGggMyBpbnB1dAogIFN0cmluZyByPSIiLCAgICAgICAgICAgICAgICAgICAvLyAgUmVzdWx0LVN0cmluZwogICAgICAgICB0LHksICAgICAgICAgICAgICAgICAgICAvLyAgVGVtcCBTdHJpbmdzCiAgICAgICAgIHpbXT0iT05FIFRXTyBUSFJFRSBGT1VSIEZJVkUgU0lYIFNFVkVOIEVJR0hUIE5JTkUiLnNwbGl0KCIgIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICBTdHJpbmctYXJyYXkgb2YgIk9ORSIgdGhyb3VnaCAiTklORSIKICBmb3IoaW50IGk9MCxqLGwsYjtpPDk7KXsgICAgICAgLy8gIExvb3AgKDEpIGZyb20gMCB0byA5IChleGNsdXNpdmUpCiAgICBmb3Ioaj1iPTA7ICAgICAgICAgICAgICAgICAgIC8vICAgU2V0IGBqYCBhbmQgYGJgIGJvdGggdG8gMAogICAgICAgIGo8KGw9KHk9eltpXSkubGVuZ3RoKCkpICAvLyAgIElubmVyIGxvb3AgKDIpIG92ZXIgdGhlIGNoYXJhY3RlcnMgb2YgdGhlIGN1cnJlbnQgU3RyaW5nLXJlcHJlc2VudGF0aW9uCiAgICAgICAgJnMubGVuZ3RoKCk+MzsgICAgICAgICAgIC8vICAgYW5kIGFzIGxvbmcgYXMgdGhlIHJlbWFpbmluZyBpbnB1dC1TdHJpbmcgaXMgYXQgbGVhc3Qgb2YgbGVuZ3RoIDMgKG9yIDAgaWYgd2UgZXhjbHVzaXZlIHRoZSB0aHJlZSBzcGFjZXMpCiAgICAgIGIrPSAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgIFJhaXNlIGBiYCBieToKICAgICAgICAgcy5zdWJzdHJpbmcoMCxsKS5zcGxpdCh0PSIiK3kuY2hhckF0KGorKyksLTEpLmxlbmd0aD09eS5zcGxpdCh0LC0xKS5sZW5ndGg/CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICBJZiB0aGUgYW1vdW50IG9mIG9jY3VyYW5jZXMgb2YgdGhlIGN1cnJlbnQgY2hhcmFjdGVyIGluIGJvdGggU3RyaW5ncyBpcyB0aGUgc2FtZQogICAgICAgICAgMSAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgIFJhaXNlIGBiYCBieSAxCiAgICAgICAgIDogICAgICAgICAgICAgICAgICAgICAgIC8vICAgICBFbHNlOgogICAgICAgICAgMCAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgIGBiYCByZW1haW5zIHRoZSBzYW1lCiAgICApOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgRW5kIG9mIGlubmVyIGxvb3AgKDIpCiAgICBpZihiPT1sKXsgICAgICAgICAgICAgICAgICAgIC8vICAgSWYgYGJgIG5vdyBlcXVhbHMgYGxgLCB3aGljaCBtZWFucyBpdCBtYXRjaGVzIHRoZSBjdXJyZW50IFN0cmluZy1yZXByZXNlbnRhdGlvbgogICAgICBzPXMuc3Vic3RyaW5nKGwpOyAgICAgICAgICAvLyAgICBSZW1vdmUgdGhpcyBzdWJzdHJpbmcgZnJvbSB0aGUgaW5wdXQKICAgICAgcis9aSsxOyAgICAgICAgICAgICAgICAgICAgLy8gICAgQW5kIGFwcGVuZCB0aGlzIG51bWJlciB0byB0aGUgcmVzdWx0LVN0cmluZwogICAgfWVsc2UgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIEVsc2U6CiAgICAgIGkrKzsgICAgICAgICAgICAgICAgICAgICAgIC8vICAgIFJhaXNlIGBpYCB0byBnbyB0byB0aGUgbmV4dCBudW1iZXIKICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIEVuZCBvZiBsb29wICgxKQogIHJldHVybiByOyAgICAgICAgICAgICAgICAgICAgICAvLyAgUmV0dXJuIHRoZSByZXN1bHQtU3RyaW5nCn0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEVuZCBvZiBtZXRob2QKCioqLw==