庄周梦蝶

生活、程序、未来
   :: 首页 ::  ::  :: 聚合  :: 管理
刚学ruby时写的工具,我自己一直在用,放在桌面上,遇到不懂单词就得问它。发在railscn上,ranchgirl修改的更为ruby way。

 受blogjava上的帖子启发,实在是个有趣的主意,写了个ruby版本的,对俺这等英语一般的同学来说,google在线翻译经常使用呐,原贴之java版
http://www.blogjava.net/ekinglong/archive/2006/11/12/80704.html?Pending=true#Post

require 'net/http'
def translate
  txt
=STDIN.gets
  break 
if txt.strip=='e' or txt.strip=='exit'
  temp
=txt.split(' ')
  
if temp[1]=='1' or temp.size==1
    langpair
='en|zh-CN'
  
else
    langpair
='zh-CN|en'
  end
 
#使用代理  
  $proxy_addr = '127.0.0.1'
  
$proxy_port = 80

  response 
= Net::HTTP.Proxy($proxy_addr, $proxy_port).post_form(URI.parse("http://translate.google.com/translate_t"),{'text'=>temp[0],'langpair'=>langpair})

  response
.body =~ /<div id=result_box dir=ltr>(.*)<\/div>/
  result 
= $1 
  puts '翻译内容:'+temp[0]
  puts 
'google返回:'+result
  puts 
'-------------------退出请打e或者exit---------------'
  translate
end
translate


ranchgirl修改的版本,没有使用递归:
require 'net/http'
def usage
  
"usage: word [lang2 [lang1]]\n" +
  
"Translate word from lang1 (default en, English) to lang2 (default es, Spanish)\n" +
  
"ISO language code: http://www.unicode.org/unicode/onlinedat/languages.html" 
end
def translate
  arr 
= ARGV
  
if !arr[0] then puts usage; return end
  arr[
1= "es" unless arr[1]
  arr[
2= "en" unless arr[2
  langpair 
= "#{arr[2]}|#{arr[1]}"   
  response 
= Net::HTTP.post_form(URI.parse("http://translate.google.com/translate_t"),
                                 {
:text => arr[0], :langpair => langpair})
  response
.body =~ /<div id=result_box dir=ltr>(.*)<\/div>/
  result 
= $1 
  result 
= "No #{langpair} translation available for #{arr[0]}" if result.size == 0
  puts result
end
translate 


评论

# re: 利用google在线翻译制作自己的翻译程序之ruby版  回复  更多评论   

2008-07-09 14:43 by 陈菲
#include<stdio.h>
#define MAX 2147483647
long re(long int);
int nonres(long int s);
void main()
{
long int n,m;
int count=0;
printf("Please enetr a number optionaly:");
scanf("%ld",&n);
printf("The generation process of palindrome:\n");
while(!nonres((m=re(n))+n))
{
if(m+n>=MAX)
{
printf(" input error,break.\n");
break;
}
else
{
printf("[%d]:%ld+%ld=%ld\n",++count,n,m,m+n);
n+=m;
}
}
printf("[%d]:%ld+%ld=%ld\n",++count,n,m,m+n);
printf("Here we reached the aim at last!\n");
}
long re(long int a)
{
long int t;
for(t=0;a>0;a/=10)
t=t*10+a%10;
return t;
}
int nonres(long int s)
{
if(re(s)==s) return 1;
else return 0;
}

# re: 利用google在线翻译制作自己的翻译程序之ruby版  回复  更多评论   

2008-08-11 15:14 by 小博
从33个数中选6个数的排列,要全部显示出来的.但不能重复.

# re: 利用google在线翻译制作自己的翻译程序之ruby版  回复  更多评论   

2008-08-11 16:41 by dennis
@小博
你们两位干嘛呢,自说自话

只有注册用户登录后才能发表评论。


网站导航: