/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
{
rowColFromA1("C5");
rowColFromA1("$AB123456789");
rowColFromA1("$C$5");
rowColFromA1("C$5");
rowColFromA1("$C5");
rowColFromA1("$D$5");
rowColFromA1("D$5");
rowColFromA1("$D5");
rowColFromA1("$aC$5");
rowColFromA1("$c$5");
rowColFromA1("cBa$99");
rowColFromA1("cBa$");
rowColFromA1("99");
rowColFromA1("$K$34");
}
public static int[] rowColFromA1
(String a1ref
) { int ii=0, jj, colVal=0;
char[] cellAddr = a1ref.toCharArray();
int[] rowCol = new int[2];
int endOfCol;
try {
while(cellAddr[ii] >= 'A' || cellAddr[ii] == '$' ) { ii++;};
endOfCol = (cellAddr[ii-1] == '$') ? ii-1 : ii;
{ rowCol[0] = 1; rowCol[1] = 1; return rowCol;}
// skip $ of col, if any
jj = (cellAddr[0] == '$') ? 1 : 0;
// ii now points to first character of row address
for(;jj
<endOfCol
;jj
++) colVal
= 26*colVal
+ Character.
toUpperCase(cellAddr
[jj
]) -'A' + 1; rowCol[1] = (colVal > 0) ? colVal : 1;
int rowVal = 0;
for (;ii < cellAddr.length; ii++)
rowVal = rowVal * 10 + cellAddr[ii] - '0';
rowCol[0] = (rowVal > 0) ? rowVal : 1;
System.
out.
println("R"+ rowCol
[0]+"C"+rowCol
[1]);
return rowCol;
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbgoJewoJCXJvd0NvbEZyb21BMSgiQzUiKTsKCQlyb3dDb2xGcm9tQTEoIiRBQjEyMzQ1Njc4OSIpOwoJCXJvd0NvbEZyb21BMSgiJEMkNSIpOwoJCXJvd0NvbEZyb21BMSgiQyQ1Iik7CgkJcm93Q29sRnJvbUExKCIkQzUiKTsKCQlyb3dDb2xGcm9tQTEoIiREJDUiKTsKCQlyb3dDb2xGcm9tQTEoIkQkNSIpOwoJCXJvd0NvbEZyb21BMSgiJEQ1Iik7CgkJcm93Q29sRnJvbUExKCIkYUMkNSIpOwoJCXJvd0NvbEZyb21BMSgiJGMkNSIpOwoJCXJvd0NvbEZyb21BMSgiY0JhJDk5Iik7CgkJcm93Q29sRnJvbUExKCJjQmEkIik7CgkJcm93Q29sRnJvbUExKCI5OSIpOwoJCXJvd0NvbEZyb21BMSgiJEskMzQiKTsKCX0KCQoJcHVibGljIHN0YXRpYyBpbnRbXSByb3dDb2xGcm9tQTEoU3RyaW5nIGExcmVmKSB7CgkJICBpbnQgaWk9MCwgamosIGNvbFZhbD0wOwoJCSAgY2hhcltdIGNlbGxBZGRyID0gYTFyZWYudG9DaGFyQXJyYXkoKTsKCQkgIGludFtdIHJvd0NvbCA9IG5ldyBpbnRbMl07CgkgICAgICBpbnQgZW5kT2ZDb2w7CgoJCSAgdHJ5IHsJCSAgCgkJICAgIHdoaWxlKGNlbGxBZGRyW2lpXSA+PSAnQScgfHwgY2VsbEFkZHJbaWldID09ICckJyApIHsgaWkrKzt9OwogICAgIAkgICAgZW5kT2ZDb2wgPSAoY2VsbEFkZHJbaWktMV0gPT0gJyQnKSA/IGlpLTEgOiBpaTsKICAgICAgICAgIH0gY2F0Y2ggKEFycmF5SW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiBhaW9iZSkgCiAgICAgICAgICB7IHJvd0NvbFswXSA9IDE7IHJvd0NvbFsxXSA9IDE7IHJldHVybiByb3dDb2w7fSAKICAgICAgICAgIC8vIHNraXAgJCBvZiBjb2wsIGlmIGFueQoJCSAgamogPSAoY2VsbEFkZHJbMF0gPT0gJyQnKSA/IDEgOiAwOwoKCQkgIAoJCSAgLy8gaWkgbm93IHBvaW50cyB0byBmaXJzdCBjaGFyYWN0ZXIgb2Ygcm93IGFkZHJlc3MKCQkgIGZvcig7amo8ZW5kT2ZDb2w7amorKykgY29sVmFsID0gMjYqY29sVmFsICsgQ2hhcmFjdGVyLnRvVXBwZXJDYXNlKGNlbGxBZGRyW2pqXSkgLSdBJyArIDE7CgkJICByb3dDb2xbMV0gPSAoY29sVmFsID4gMCkgPyBjb2xWYWwgOiAxOwoKCQkgIGludCByb3dWYWwgPSAwOwoJCSAgZm9yICg7aWkgPCBjZWxsQWRkci5sZW5ndGg7IGlpKyspCiAgIAkJICAgIHJvd1ZhbCA9IHJvd1ZhbCAqIDEwICsgY2VsbEFkZHJbaWldIC0gJzAnOwogICAJCSAgCgkJICByb3dDb2xbMF0gPSAocm93VmFsID4gMCkgPyByb3dWYWwgOiAxOwoJCSAgU3lzdGVtLm91dC5wcmludGxuKCJSIisgcm93Q29sWzBdKyJDIityb3dDb2xbMV0pOwoKCQkgIHJldHVybiByb3dDb2w7CgkJfQoJCn0=