486 - English-Number Translator

All about problems in Volume 4. If there is a thread about your problem, please use it. If not, create one with its number in the subject.

Moderator: Board moderators

Mukit Chowdhury
Learning poster
Posts: 99
Joined: Fri Aug 17, 2012 9:23 pm
Location: Dhaka
Contact:

Re: 486 - English-Number Translator

Post by Mukit Chowdhury »

why WA ??? Help please .......... :(

Code: Select all

Accepted.......
Need some sample input.... :(
Last edited by Mukit Chowdhury on Sun Jan 06, 2013 7:21 pm, edited 2 times in total.
Mukit Chowdhury
Learning poster
Posts: 99
Joined: Fri Aug 17, 2012 9:23 pm
Location: Dhaka
Contact:

Re: 486 - English-Number Translator

Post by Mukit Chowdhury »

is "ninety nine hundred thousand" is allowed ??? my code fails in this case ....
brianfry713
Guru
Posts: 5947
Joined: Thu Sep 01, 2011 9:09 am
Location: San Jose, CA, USA

Re: 486 - English-Number Translator

Post by brianfry713 »

Don't use floating point on this problem.

ninety nine hundred thousand doesn't sound like a correct English number.
Check input and AC output for thousands of problems on uDebug!
Mukit Chowdhury
Learning poster
Posts: 99
Joined: Fri Aug 17, 2012 9:23 pm
Location: Dhaka
Contact:

Re: 486 - English-Number Translator

Post by Mukit Chowdhury »

Hummm... As I use visual c++ compiler , when I use long long,the compiler shows error... :)
so I used double...But this time I've used long long and result is same... :( WA !!!
What should I change in this code ??? Would you please give me some sample input ????

Code: Select all

Accepted...
This code is similar to the previous one... just i've used long long instead of double... and of course specifier too...
Last edited by Mukit Chowdhury on Sun Jan 06, 2013 7:22 pm, edited 2 times in total.
Mukit Chowdhury
Learning poster
Posts: 99
Joined: Fri Aug 17, 2012 9:23 pm
Location: Dhaka
Contact:

Re: 486 - English-Number Translator

Post by Mukit Chowdhury »

can there be any case like "hundred million" ??? @brianfry713
brianfry713
Guru
Posts: 5947
Joined: Thu Sep 01, 2011 9:09 am
Location: San Jose, CA, USA

Re: 486 - English-Number Translator

Post by brianfry713 »

No I don't think these inputs are valid:
hundred million
hundred
thousand

There should be a number like one in front of them.

Try making your code work with multiple spaces between numbers, like:

Code: Select all

one hundred
one  hundred
Check input and AC output for thousands of problems on uDebug!
Mukit Chowdhury
Learning poster
Posts: 99
Joined: Fri Aug 17, 2012 9:23 pm
Location: Dhaka
Contact:

Re: 486 - English-Number Translator

Post by Mukit Chowdhury »

Hummm.... Now,it's okay too... :(
but WA !!! would you provide me some more test case,please ???? @brianfry713
This is my edited code...

Code: Select all

Accepted
I've not found any error... may be,I am missing something... :(
Last edited by Mukit Chowdhury on Sun Jan 06, 2013 7:22 pm, edited 1 time in total.
brianfry713
Guru
Posts: 5947
Joined: Thu Sep 01, 2011 9:09 am
Location: San Jose, CA, USA

Re: 486 - English-Number Translator

Post by brianfry713 »

Try to write more straightforward code. My AC code uses strtok to tokenize the line. I keep two variables, one for the current number and one for the sum of the millions and thousands.

Can you explain what each of your variables does, or give them better names? Why are you doing %10 and /10?
Check input and AC output for thousands of problems on uDebug!
Mukit Chowdhury
Learning poster
Posts: 99
Joined: Fri Aug 17, 2012 9:23 pm
Location: Dhaka
Contact:

Re: 486 - English-Number Translator

Post by Mukit Chowdhury »

Hummm... my code is really complex... :(
ok...I am trying to simplify it... :)
Thanks for your help... :)
by %10 & /10 , I'm trying to check that integer which is divided by 10 but less than 100...such as 10,20,30,40...,90...
Actually I wanted to give a rank to the integers... when 90 comes after a string "thousand" that means I've to multiply it... But when 90 comes after "thousand",then I've to add....I'm sorry for my poor english... :(
Trying to simplify it... :)
Mukit Chowdhury
Learning poster
Posts: 99
Joined: Fri Aug 17, 2012 9:23 pm
Location: Dhaka
Contact:

Re: 486 - English-Number Translator

Post by Mukit Chowdhury »

Accepted....Thanks brianfry713...
Though I've not found any error in my previous one, I changed my logic.And this time accepted in 1st submission... :D
saju10
New poster
Posts: 8
Joined: Mon Nov 18, 2013 12:09 am

Re: 486 - English-Number Translator

Post by saju10 »

why wrong answer? I tried various inputs but my code is giving correct output
here given my code

import java.util.Scanner;
class EnglishNumberTranslator {
public static void main(String args[]){
Scanner input=new Scanner(System.in);
while(input.hasNextLine()){
String st=input.nextLine();
char[] ch=st.toCharArray();
int i,a,total,l=st.length();
i=a=total=0;
if(ch=='n'){
if(ch[i+1]=='e'){System.out.print("-");i=9;}
}
while(i<st.length()){
if(i<l){
while(ch==' '){
i++;
if(i>=l)
break;
}
}
int t=0,h=0,m=0;
if(ch=='z'){a=0;i+=5;}
else if(ch=='o'){a=1;i+=4;}
else if(ch=='t'){
if(ch[i+1]=='w'){
if(ch[i+2]=='o'){a=2;i+=4;}
else if(ch[i+3]=='l'){a=12;i+=7;}
else {a=20;i+=7;}
}
else if(ch[i+1]=='h'){
if(ch[i+2]=='r'){a=3;i+=6;}
else if(ch[i+5]=='y'){a=30;i+=7;}
else if(ch[i+2]=='i'){a=13;i+=9;}
else{a=1000;i+=9;t=1;}
}
else{a=10;i+=4;}
}
else if(ch=='f'){
if(ch[i+1]=='o'){
if(i+4<l){
if(ch[i+4]==' '){a=4;i+=5;}
else if(ch[i+2]=='r'){a=40;i+=6;}
else{a=14;i+=9;}
}
else{a=4;i+=5;}
}
else{
if(ch[i+2]=='v'){a=5;i+=5;}
else if(ch[i+4]=='y'){a=50;i+=6;}
else{a=15;i+=9;}
}
}
else if(ch=='s'){
if(ch[i+1]=='i'){
if(i+4<l){
if(ch[i+3]==' '){a=6;i+=4;}
else if(ch[i+4]=='y'){a=60;i+=6;}
else{a=16;i+=8;}
}
else{a=6;i+=4;}
}
else{
if(i+5<l){
if(ch[i+5]==' '){a=7;i+=6;}
else if(ch[i+6]=='y'){a=70;i+=8;}
else{a=17;i+=10;}
}
else{a=7;i+=6;}
}
}
else if(ch=='e'){
if(ch[i+1]=='l'){a=11;i+=7;}
else{
if(i+5<l){
if(ch[i+5]==' '){a=8;i+=6;}
else if(ch[i+5]=='e'){a=18;i+=9;}
else{a=80;i+=7;}
}
else{a=8;i+=6;}
}
}
else if(ch=='n'){
if(i+4<l){
if(ch[i+4]==' '){a=9;i+=5;}
else if(ch[i+5]=='y'){a=90;i+=7;}
else{a=19;i+=9;}
}
else{a=9;i+=5;}
}
else if(ch=='h'){
a=100;i+=8;h=1;
}
else{a=1000000;i+=8;m=1;}
if(m==1){total=total*a;}
else if(t==1){
int temp2,temp=total%1000000;
temp2=total/1000000;
total=temp2*1000000+temp*a;
}
else if(h==1){
int temp5,temp6=total%1000;
temp5=total/1000;
total=temp5*1000+temp6*a;
}
else{
total+=a;
}
if(i<l){
while(ch[i]==' '){
i++;
if(i>=l)
break;
}
}
}
System.out.println(total);
}
}
}
brianfry713
Guru
Posts: 5947
Joined: Thu Sep 01, 2011 9:09 am
Location: San Jose, CA, USA

Re: 486 - English-Number Translator

Post by brianfry713 »

Use class Main.
Check input and AC output for thousands of problems on uDebug!
uDebug
A great helper
Posts: 475
Joined: Tue Jul 24, 2012 4:23 pm

Re: 486 - English-Number Translator

Post by uDebug »

angga888 wrote:Try these inputs :
Thanks for the great test cases.
Check input and AC output for over 7,500 problems on uDebug!

Find us on Facebook. Follow us on Twitter.
Nakar81
New poster
Posts: 12
Joined: Sun Sep 18, 2016 6:40 pm

Re: 486 - English-Number Translator

Post by Nakar81 »

I have checked all the entries in this thread and am getting the correct answer regarding uDebug.

Can anyone pass me some critical input?

Code: Select all

zero hundred
zero hundred million
hundred million
negative nine hundred ninety nine million nine hundred ninety nine thousand nine hundred ninety nine
nine hundred ninety nine thousand nine hundred ninety nine
nine hundred ninety
zero
six
negative seven hundred twenty nine
one million one hundred one
one
two
three
four
five
six
seven
eight
nine
ten
eleven
twelve
twenty
twenty two
eighty eight
eighty
hundred
thousand
negative one hundred fifty thousand
one thousand fifty
negative twelve million twelve thousand
eight hundred eighty eight million
two million two thousand twelve
eight hundred eighty eight million eight hundred eighty eight thousand eight hundred eighty eight
nine hundred million one hundred two thousand one hundred eleven
one hundred eleven million eleven
seven hundred nine million nine hundred
nine hundred nine thousand nine
eight hundred eighty eight
eighty eight million eighty eight thousand eighty eight
nine hundred nine thousand nine hundred

nine hundred ninety nine million
nine hundred nine million
nine hundred million
nine million
ninety million
ninety nine million
nine hundred ninety nine million ninety nine thousand ninety nine
nine hundred ninety nine million nine hundred ninety nine thousand ninety nine
nine hundred ninety nine million nine hundred ninety nine thousand nine hundred ninety nine
nine hundred ninety nine million nine hundred ninety
nine
ninety
ninety nine
nine hundred nine
nine hundred
nine hundred ninety nine
nine hundred thousand
nine hundred ninety nine thousand
nine hundred nine thousand
nine thousand
nine thousand ninety nine
nine hundred ninety nine thousand ninety nine
nine hundred ninety nine thousand nine hundred ninety nine
six
negative seven hundred twenty nine
one million one hundred one
ninety nine hundred thousand
hundred million
one hundred
one  hundred

Code: Select all

import java.util.Scanner;

public class Main {

	public void run() {
		
		Scanner sc = new Scanner(System.in);
		while (sc.hasNextLine()){
			String cadena = sc.nextLine();
			System.out.println(tratar(cadena));
		}
		sc.close();
	}
	
	public long tratar(String cadena) {
		long res = 0;
		String div[] = cadena.split(" ");
		
		int multiplicador = 1;
		int valorActual = 0;
		
		for (String p : div) {
			switch (p) {
			case "negative":
				multiplicador = -1;
				break;
			case "zero":
				break;
			case "one":
				valorActual += 1;
				break;
			case "two":
				valorActual += 2;
				break;
			case "three":
				valorActual += 3;
				break;
			case "four":
				valorActual += 4;
				break;
			case "five":
				valorActual += 5;
				break;
			case "six":
				valorActual += 6;
				break;
			case "seven":
				valorActual += 7;
				break;
			case "eight":
				valorActual += 8;
				break;
			case "nine":
				valorActual += 9;
				break;
			case "ten":
				valorActual += 10;
				break;
			case "eleven":
				valorActual += 11;
				break;
			case "twelve":
				valorActual += 12;
				break;
			case "thirteen":
				valorActual += 13;
				break;
			case "fourteen":
				valorActual += 14;
				break;
			case "fifteen":
				valorActual = 15;
				break;
			case "sixteen":
				valorActual += 16;
				break;
			case "seventeen":
				valorActual += 17;
				break;
			case "eighteen":
				valorActual += 18;
				break;
			case "nineteen":
				valorActual += 19;
				break;
			case "twenty":
				valorActual += 20;
				break;
			case "thirty":
				valorActual += 30;
				break;
			case "forty":
				valorActual += 40;
				break;
			case "fifty":
				valorActual += 50;
				break;
			case "sixty":
				valorActual += 60;
				break;
			case "seventy":
				valorActual += 70;
				break;
			case "eighty":
				valorActual += 80;
				break;
			case "ninety":
				valorActual += 90;
				break;
			case "hundred":
				valorActual = valorActual*100;
				break;
			case "thousand":
				res = res + valorActual*1000;
				valorActual = 0;
				break;
			case "million":
				res = res + valorActual*1000000;
				valorActual = 0;
				break;
			default:
				break;
			}
		}
		
		res = res + valorActual;
		
		return res*multiplicador;
	}
	
	public static void main(String[] args) {

		Main principal = new Main();
		principal.run();
		System.exit(0);

	}
}
Nakar81
New poster
Posts: 12
Joined: Sun Sep 18, 2016 6:40 pm

Re: 486 - English-Number Translator

Post by Nakar81 »

I have checked all the entries in this thread and am getting the correct answer regarding uDebug.

Can anyone pass me some critical input?
Attach all entry on this post.
Attach my source code.

Code: Select all

zero hundred
zero hundred million
hundred million
negative nine hundred ninety nine million nine hundred ninety nine thousand nine hundred ninety nine
nine hundred ninety nine thousand nine hundred ninety nine
nine hundred ninety
zero
six
negative seven hundred twenty nine
one million one hundred one
one
two
three
four
five
six
seven
eight
nine
ten
eleven
twelve
twenty
twenty two
eighty eight
eighty
hundred
thousand
negative one hundred fifty thousand
one thousand fifty
negative twelve million twelve thousand
eight hundred eighty eight million
two million two thousand twelve
eight hundred eighty eight million eight hundred eighty eight thousand eight hundred eighty eight
nine hundred million one hundred two thousand one hundred eleven
one hundred eleven million eleven
seven hundred nine million nine hundred
nine hundred nine thousand nine
eight hundred eighty eight
eighty eight million eighty eight thousand eighty eight
nine hundred nine thousand nine hundred

nine hundred ninety nine million
nine hundred nine million
nine hundred million
nine million
ninety million
ninety nine million
nine hundred ninety nine million ninety nine thousand ninety nine
nine hundred ninety nine million nine hundred ninety nine thousand ninety nine
nine hundred ninety nine million nine hundred ninety nine thousand nine hundred ninety nine
nine hundred ninety nine million nine hundred ninety
nine
ninety
ninety nine
nine hundred nine
nine hundred
nine hundred ninety nine
nine hundred thousand
nine hundred ninety nine thousand
nine hundred nine thousand
nine thousand
nine thousand ninety nine
nine hundred ninety nine thousand ninety nine
nine hundred ninety nine thousand nine hundred ninety nine
six
negative seven hundred twenty nine
one million one hundred one
ninety nine hundred thousand
hundred million
one hundred
one  hundred

Code: Select all

import java.util.Scanner;

public class Main {

	public void run() {
		
		Scanner sc = new Scanner(System.in);
		while (sc.hasNextLine()){
			String cadena = sc.nextLine();
			System.out.println(tratar(cadena));
		}
		sc.close();
	}
	
	public long tratar(String cadena) {
		long res = 0;
		String div[] = cadena.split(" ");
		
		int multiplicador = 1;
		int valorActual = 0;
		
		for (String p : div) {
			switch (p) {
			case "negative":
				multiplicador = -1;
				break;
			case "zero":
				break;
			case "one":
				valorActual += 1;
				break;
			case "two":
				valorActual += 2;
				break;
			case "three":
				valorActual += 3;
				break;
			case "four":
				valorActual += 4;
				break;
			case "five":
				valorActual += 5;
				break;
			case "six":
				valorActual += 6;
				break;
			case "seven":
				valorActual += 7;
				break;
			case "eight":
				valorActual += 8;
				break;
			case "nine":
				valorActual += 9;
				break;
			case "ten":
				valorActual += 10;
				break;
			case "eleven":
				valorActual += 11;
				break;
			case "twelve":
				valorActual += 12;
				break;
			case "thirteen":
				valorActual += 13;
				break;
			case "fourteen":
				valorActual += 14;
				break;
			case "fifteen":
				valorActual = 15;
				break;
			case "sixteen":
				valorActual += 16;
				break;
			case "seventeen":
				valorActual += 17;
				break;
			case "eighteen":
				valorActual += 18;
				break;
			case "nineteen":
				valorActual += 19;
				break;
			case "twenty":
				valorActual += 20;
				break;
			case "thirty":
				valorActual += 30;
				break;
			case "forty":
				valorActual += 40;
				break;
			case "fifty":
				valorActual += 50;
				break;
			case "sixty":
				valorActual += 60;
				break;
			case "seventy":
				valorActual += 70;
				break;
			case "eighty":
				valorActual += 80;
				break;
			case "ninety":
				valorActual += 90;
				break;
			case "hundred":
				valorActual = valorActual*100;
				break;
			case "thousand":
				res = res + valorActual*1000;
				valorActual = 0;
				break;
			case "million":
				res = res + valorActual*1000000;
				valorActual = 0;
				break;
			default:
				break;
			}
		}
		
		res = res + valorActual;
		
		return res*multiplicador;
	}
	
	public static void main(String[] args) {

		Main principal = new Main();
		principal.run();
		System.exit(0);

	}
}
Post Reply

Return to “Volume 4 (400-499)”