blob: 2aec7c447d98fbc742baea773124e7e8b89c483e [file] [log] [blame]
/*
* The Computer Language Benchmarks Game
* http://shootout.alioth.debian.org/
*
* contributed by James Durbin
* slightly modified from Java version from
* Anthony Donnefort and Razii
*/
import java.io.*
class ReversibleByteArray extends java.io.ByteArrayOutputStream {
static final byte[] cmp = new byte[128]
static {
for (int i = 0; i < cmp.length; i++) cmp[i] = (byte) i
cmp[(byte)'t'] = cmp[(byte)'T'] = (byte)'A'
cmp[(byte)'a'] = cmp[(byte)'A'] = (byte)'T'
cmp[(byte)'g'] = cmp[(byte)'G'] = (byte)'C'
cmp[(byte)'c'] = cmp[(byte)'C'] = (byte)'G'
cmp[(byte)'v'] = cmp[(byte)'V'] = (byte)'B'
cmp[(byte)'h'] = cmp[(byte)'H'] = (byte)'D'
cmp[(byte)'r'] = cmp[(byte)'R'] = (byte)'Y'
cmp[(byte)'m'] = cmp[(byte)'M'] = (byte)'K'
cmp[(byte)'y'] = cmp[(byte)'Y'] = (byte)'R'
cmp[(byte)'k'] = cmp[(byte)'K'] = (byte)'M'
cmp[(byte)'b'] = cmp[(byte)'B'] = (byte)'V'
cmp[(byte)'d'] = cmp[(byte)'D'] = (byte)'H'
cmp[(byte)'u'] = cmp[(byte)'U'] = (byte)'A'
}
void reverse() throws Exception {
if (count > 0) {
int begin = 0, end = count - 1
while (buf[begin++] != '\n')
while (begin <= end) {
if (buf[begin] == '\n') begin++
if (buf[end] == '\n') end--
if (begin <= end) {
byte tmp = buf[begin]
buf[begin++] = cmp[buf[end]]
buf[end--] = cmp[tmp]
}
}
System.out.write(buf, 0, count)
}
}
}
byte[] line = new byte[82]
int read
ReversibleByteArray buf = new ReversibleByteArray()
while ((read = System.in.read(line)) != -1) {
int i = 0, last = 0
while (i < read) {
if (line[i] == '>') {
buf.write(line, last, i - last)
buf.reverse()
buf.reset()
last = i
}
i++
}
buf.write(line, last, read - last)
}
buf.reverse()