/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
import java.util.stream.Collectors ;
import java.time.* ;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
{
System.
out.
println( "Bonjour. " + Instant.
now() );
NatoConverter natoConverter = new NatoConverter();
List < String > result
= natoConverter.
convert( "Basil" ); }
}
class NatoConverter {
private static List < String > natoWords
= List.
of( "Alpha" ,
"Bravo" ,
"Charlie" ,
"Delta" ,
"Echo" ,
"Foxtrot" ,
"Golf" ,
"Hotel" ,
"India" ,
"Juliett" ,
"Kilo" ,
"Lima" ,
"Mike" ,
"November" ,
"Oscar" ,
"Papa" ,
"Quebec" ,
"Romeo" ,
"Sierra" ,
"Tango" ,
"Uniform" ,
"Victor" ,
"Whiskey" ,
"Xray" ,
"Yankee" ,
"Zulu" );
input
.codePoints()
.mapToObj( this :: wordForCodePoint )
.collect( Collectors.toList () )
);
}
public String wordForCodePoint
( int codePoint
) { if ( codePoint >= 65 && codePoint <= 90 ) { // US-ASCII for A-Z (uppercase) characters are code points 65 to 90.
return NatoConverter.natoWords.get( codePoint - 65 ); // Annoying zero-based index counting.
} else if ( codePoint >= 97 && codePoint <= 122 ) { // US-ASCII for a-z (lowercase) characters are code points 97 to 122.
return NatoConverter.natoWords.get( codePoint - 97 ); // Annoying zero-based index counting.
} else {
return "INVALID CODE POINT: " + codePoint;
}
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CmltcG9ydCBqYXZhLnV0aWwuc3RyZWFtLkNvbGxlY3RvcnMgOwoKaW1wb3J0IGphdmEudGltZS4qIDsKCi8qIE5hbWUgb2YgdGhlIGNsYXNzIGhhcyB0byBiZSAiTWFpbiIgb25seSBpZiB0aGUgY2xhc3MgaXMgcHVibGljLiAqLwpjbGFzcyBJZGVvbmUKewoJcHVibGljIHN0YXRpYyB2b2lkIG1haW4gKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBqYXZhLmxhbmcuRXhjZXB0aW9uCgl7CgkJU3lzdGVtLm91dC5wcmludGxuKCAiQm9uam91ci4gIiArIEluc3RhbnQubm93KCkgKTsKCQkKCQlOYXRvQ29udmVydGVyIG5hdG9Db252ZXJ0ZXIgPSBuZXcgTmF0b0NvbnZlcnRlcigpOwogICAgICAgIExpc3QgPCBTdHJpbmcgPiByZXN1bHQgPSBuYXRvQ29udmVydGVyLmNvbnZlcnQoICJCYXNpbCIgKTsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIHJlc3VsdCApOwoJfQp9CgpjbGFzcyBOYXRvQ29udmVydGVyIHsKICAgIHByaXZhdGUgc3RhdGljIExpc3QgPCBTdHJpbmcgPiBuYXRvV29yZHMgPSBMaXN0Lm9mKCAiQWxwaGEiICwgIkJyYXZvIiAsICJDaGFybGllIiAsICJEZWx0YSIgLCAiRWNobyIgLCAiRm94dHJvdCIgLCAiR29sZiIgLCAiSG90ZWwiICwgIkluZGlhIiAsICJKdWxpZXR0IiAsICJLaWxvIiAsICJMaW1hIiAsICJNaWtlIiAsICJOb3ZlbWJlciIgLCAiT3NjYXIiICwgIlBhcGEiICwgIlF1ZWJlYyIgLCAiUm9tZW8iICwgIlNpZXJyYSIgLCAiVGFuZ28iICwgIlVuaWZvcm0iICwgIlZpY3RvciIgLCAiV2hpc2tleSIgLCAiWHJheSIgLCAiWWFua2VlIiAsICJadWx1IiApOwoKICAgIHB1YmxpYyBMaXN0IDwgU3RyaW5nID4gY29udmVydCAoIFN0cmluZyBpbnB1dCApIHsKICAgICAgICByZXR1cm4gTGlzdC5jb3B5T2YoCiAgICAgICAgICAgICAgICBpbnB1dAogICAgICAgICAgICAgICAgICAgICAgICAuY29kZVBvaW50cygpCiAgICAgICAgICAgICAgICAgICAgICAgIC5tYXBUb09iaiggdGhpcyA6OiB3b3JkRm9yQ29kZVBvaW50ICkKICAgICAgICAgICAgICAgICAgICAgICAgLmNvbGxlY3QoIENvbGxlY3RvcnMudG9MaXN0ICgpICkKICAgICAgICApOwogICAgfQoKICAgIHB1YmxpYyBTdHJpbmcgd29yZEZvckNvZGVQb2ludCAoIGludCBjb2RlUG9pbnQgKSB7CiAgICAgICAgaWYgKCBjb2RlUG9pbnQgPj0gNjUgJiYgY29kZVBvaW50IDw9IDkwICkgeyAgLy8gVVMtQVNDSUkgZm9yIEEtWiAodXBwZXJjYXNlKSBjaGFyYWN0ZXJzIGFyZSBjb2RlIHBvaW50cyA2NSB0byA5MC4KICAgICAgICAgICAgcmV0dXJuIE5hdG9Db252ZXJ0ZXIubmF0b1dvcmRzLmdldCggY29kZVBvaW50IC0gNjUgKTsgIC8vIEFubm95aW5nIHplcm8tYmFzZWQgaW5kZXggY291bnRpbmcuCiAgICAgICAgfSBlbHNlIGlmICggY29kZVBvaW50ID49IDk3ICYmIGNvZGVQb2ludCA8PSAxMjIgKSB7ICAvLyBVUy1BU0NJSSBmb3IgYS16IChsb3dlcmNhc2UpIGNoYXJhY3RlcnMgYXJlIGNvZGUgcG9pbnRzIDk3IHRvIDEyMi4KICAgICAgICAgICAgcmV0dXJuIE5hdG9Db252ZXJ0ZXIubmF0b1dvcmRzLmdldCggY29kZVBvaW50IC0gOTcgKTsgIC8vIEFubm95aW5nIHplcm8tYmFzZWQgaW5kZXggY291bnRpbmcuCiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuICJJTlZBTElEIENPREUgUE9JTlQ6ICIgKyBjb2RlUG9pbnQ7CiAgICAgICAgfQogICAgfQp9