Oraya gidiyoruz. Sürüm kırılmadan önce golf oynamak, ama şimdi tekrar çevrimiçi olduk. Daha fazla golf oynayabileceğinden eminim. Yarın üzerinde daha çok çalışacağım. Olsa da, golf olmadan düzgün çalışması için yeterince zordu ve gözlerim ona bakmaktan yorgun. haha
Java - 3220
import java.util.*;class a{int D=0,i,l,j;static boolean T=true,F=false;enum O{A("plus"),S("minus"),M("times"),D(""),P("point");String t;O(String u){t=u;}double p(double f,double s){if(this==A)f+=s;if(this==S)f-=s;if(this==M)f*=s;if(this==D)f/=s;return f;}static O f(String s){O r=null;for(O o:values())if(s.equals(o.t))r=o;return r;}}enum N{A("zero",0,F),B("one",1,F),C("two",2,F),D("three",3,F),E("four",4,F),AG("five",5,F),G("six",6,F),H("seven",7,F),I("eight",8,F),J("nine",9,F),K("ten",10,F),L("eleven",11,F),M("twelve",12,F),N("thirteen",13,F),O("fourteen",14,F),P("fifteen",15,F),Q("sixteen",16,F),R("seventeen",17,F),S("eighteen",18,F),AH("nineteen",19,F),U("twenty",20,F),V("thirty",30,F),W("forty",40,F),X("fifty",50,F),Y("sixty",60,F),Z("seventy",70,F),AA("eighty",80,F),AB("ninety",90,F),AC("hundred",100,T),AD("thousand",1000,T),AE("million",1000000,T),AF("billion",1000000000,T);String t;double v;boolean q;N(String u,int w,boolean r){t=u;v=w;q=r;}static N f(String s){N r=null;for(N n:values())if(s.equals(n.t))r=n;return r;}static N f(char s){return d(q(""+s));}static N d(double v){N r=null;for(N n:values())if(v==n.v)r=n;return r;}static String c(double n){return d(n).t;}}public static void main(String[]a){new a();}a(){while(T){try{List p=p(new Scanner(System.in).nextLine()),t=new ArrayList();double d=0;for(j=0;j<p.size();j++){Object o=p.get(j);if(o(o)){if((O)o==O.P){t.add((d(t.get(t.size()-1))+((d=d(p.get(j+1)))<10?d*=100:d<100?d*=10:d)/1000));t.remove(t.size()-2);j++;}else t.add(o);}else {N n=N.d(d(o));if(n!=null&&n.q){t.add((d(o))*d(t.get(t.size()-1)));t.remove(t.size()-2);}else t.add(o);}}double r=d(t.get(0));for(j=1;j<t.size();j++){Object c=t.get(j),l=t.get(j-1);if(o(c))continue;if(c instanceof Double&&l instanceof Double)r+=d(c);else r=((O)t.get(j-1)).p(r,d(t.get(j)));}System.out.println(p(r));}catch(Exception e){System.out.println("E");}}}List p(String s) {List r=new ArrayList();Scanner i=new Scanner(s);while(i.hasNext()){String c=i.next();if(c.equals("divided")){r.add(O.D);i.next();}else if(c.indexOf("-")!=-1){String[] num=c.split("-");r.add(N.f(num[0]).v+N.f(num[1]).v);}else{Object o=N.f(c);r.add(o!=null?((N)o).v:O.f(c));}}return r;}String p(double n){String a=String.valueOf(n),w,d=null,b="";l=a.indexOf(".");if(l!=-1){w=a.substring(0,l);d=a.substring(l+1);}else w=a;if(d.equals("0"))d=null;D=0;while(w.length()%3!=0)w=" "+w;for(i=w.length();i>0;i-=3,D++)b=w(w.substring(i-3,i))+b;return b+d(d);}String w(String w) {if(w==null)return "";w=w.trim();String b="";l=w.length();if(l>1&&w.charAt(l-2)!='0'){if(w.charAt(l-2)=='1')b=N.d(q(w.substring(l-2))).t;else b+=N.d(q(w.charAt(l-2)+"0")).t+"-"+N.f(w.charAt(l-1)).t;}for(j=(b.equals("")?l-1:l-3);j>-1;j--){N n=N.f(w.charAt(j));if(n==N.A)continue;if(j==l-1)b=n.t;else if(j==l-2)b=N.f(n.t+"0")+"-"+b;else if(j==l-3)b=n.t+" hundred "+b;}if(!b.trim().equals("")){if(D==1)b+=" thousand ";if(D==2)b+=" million ";if(D==3)b+=" billion ";}return b;}String d(String d) {if(d==null)return"";if(d.length()>3)d=d.substring(0,3);String b = " point ";for(char n:d.toCharArray())b+=N.f(n).t+" ";return b;}boolean o(Object o){return o instanceof O;}Double d(Object o){return (Double)o;}static double q(String s){return Double.parseDouble(s);}}
Satır kesmeleri ve sekmelerle
import java.util.*;
class a{
int D=0,i,l,j;
static boolean T=true,F=false;
enum O{
A("plus"),
S("minus"),
M("times"),
D(""),
P("point");
String t;
O(String u){
t=u;
}
double p(double f,double s){
if(this==A)f+=s;
if(this==S)f-=s;
if(this==M)f*=s;
if(this==D)f/=s;
return f;
}
static O f(String s){
O r=null;
for(O o:values())if(s.equals(o.t))r=o;
return r;
}
}
enum N{
A("zero",0,F),
B("one",1,F),
C("two",2,F),
D("three",3,F),
E("four",4,F),
AG("five",5,F),
G("six",6,F),
H("seven",7,F),
I("eight",8,F),
J("nine",9,F),
K("ten",10,F),
L("eleven",11,F),
M("twelve",12,F),
N("thirteen",13,F),
O("fourteen",14,F),
P("fifteen",15,F),
Q("sixteen",16,F),
R("seventeen",17,F),
S("eighteen",18,F),
AH("nineteen",19,F),
U("twenty",20,F),
V("thirty",30,F),
W("forty",40,F),
X("fifty",50,F),
Y("sixty",60,F),
Z("seventy",70,F),
AA("eighty",80,F),
AB("ninety",90,F),
AC("hundred",100,T),
AD("thousand",1000,T),
AE("million",1000000,T),
AF("billion",1000000000,T);
String t;
double v;
boolean q;
N(String u,int w,boolean r){
t=u;
v=w;
q=r;
}
static N f(String s){
N r=null;
for(N n:values())if(s.equals(n.t))r=n;
return r;
}
static N f(char s){
return d(q(""+s));
}
static N d(double v){
N r=null;
for(N n:values())if(v==n.v)r=n;
return r;
}
static String c(double n){
return d(n).t;
}
}
public static void main(String[]a){
new a();
}
a(){
while(T){
try{
List p=p(new Scanner(System.in).nextLine()),t=new ArrayList();
double d=0;
for(j=0;j<p.size();j++){
Object o=p.get(j);
if(o(o)){
if((O)o==O.P){
t.add((d(t.get(t.size()-1))+((d=d(p.get(j+1)))<10?d*=100:d<100?d*=10:d)/1000));
t.remove(t.size()-2);
j++;
}
else t.add(o);
}
else {
N n=N.d(d(o));
if(n!=null&&n.q){
t.add((d(o))*d(t.get(t.size()-1)));
t.remove(t.size()-2);
}
else t.add(o);
}
}
double r=d(t.get(0));
for(j=1;j<t.size();j++){
Object c=t.get(j),l=t.get(j-1);
if(o(c))continue;
if(c instanceof Double&&l instanceof Double)r+=d(c);
else r=((O)t.get(j-1)).p(r,d(t.get(j)));
}
System.out.println(p(r));
}
catch(Exception e){
System.out.println("E");
}
}
}
List p(String s) {
List r=new ArrayList();
Scanner i=new Scanner(s);
while(i.hasNext()){
String c=i.next();
if(c.equals("divided")){
r.add(O.D);
i.next();
}
else if(c.indexOf("-")!=-1){
String[] num=c.split("-");
r.add(N.f(num[0]).v+N.f(num[1]).v);
}
else{
Object o=N.f(c);
r.add(o!=null?((N)o).v:O.f(c));
}
}
return r;
}
String p(double n){
String a=String.valueOf(n),w,d=null,b="";
l=a.indexOf(".");
if(l!=-1){
w=a.substring(0,l);
d=a.substring(l+1);
}
else w=a;
if(d.equals("0"))d=null;
D=0;
while(w.length()%3!=0)w=" "+w;
for(i=w.length();i>0;i-=3,D++)b=w(w.substring(i-3,i))+b;
return b+d(d);
}
String w(String w) {
if(w==null)return "";
w=w.trim();
String b="";
l=w.length();
if(l>1&&w.charAt(l-2)!='0'){
if(w.charAt(l-2)=='1')b=N.d(q(w.substring(l-2))).t;
else b+=N.d(q(w.charAt(l-2)+"0")).t+"-"+N.f(w.charAt(l-1)).t;
}
for(j=(b.equals("")?l-1:l-3);j>-1;j--){
N n=N.f(w.charAt(j));
if(n==N.A)continue;
if(j==l-1)b=n.t;
else if(j==l-2)b=N.f(n.t+"0")+"-"+b;
else if(j==l-3)b=n.t+" hundred "+b;
}
if(!b.trim().equals("")){
if(D==1)b+=" thousand ";
if(D==2)b+=" million ";
if(D==3)b+=" billion ";
}
return b;
}
String d(String d) {
if(d==null)return"";
if(d.length()>3)d=d.substring(0,3);
String b = " point ";
for(char n:d.toCharArray())b+=N.f(n).t+" ";
return b;
}
boolean o(Object o){
return o instanceof O;
}
Double d(Object o){
return (Double)o;
}
static double q(String s){
return Double.parseDouble(s);
}
}
two plus two minus five times five divided by negative zero point five->2 + 2 - 5 * 5 / -0.5->54.