「男友讓我打十萬個「對不起」,漢字標上多少遍。」這個問題用 R 如何實現?
這樣的人都有女朋友?!/震驚
你們竟然被騙了,這個提問的女生根本沒有男朋友,只不過是借所謂男朋友奇葩要求的噱頭來讓知乎的廣大程序員們來解答問題罷了。
嘖嘖,可憐又單純的程序員們,你們又被釣魚了。
十分同情,並且很負責告訴你們,人心不可測。rep(「為什麼」,100000)中文數字lable自己找data.frame(c())
這是在變相完成作業嗎
Ruby的。。應該還有bug。。扛不住先睡了。。
class Fixnum
def to_chinese
length = self.to_s.length
array = []
time = length % 4 == 0 ? length / 4 : length / 4 + 1
chars = "億萬 "[3 - time , 3]
time.downto(0) do |t|
start = (t - 1) * 4 + length % 4
cut_start = start &< 0 ? 0 : start
cut_length = start &< 0 ? 4 + start : 4
cut = self.to_s[cut_start , cut_length]
unless cut == ""
ch = cut.to_i.to_ch
array.push "#{ch}#{chars[t]}" unless ch == ""
end
end
array.reverse.join.delete(" ")
end
def to_ch
chars = "零一二三四五六七八九"
bits = " 十百千"
array = []
self.to_s.length.times do |t|
cnumber = chars[self.to_s.reverse[t].to_i]
i_array = [nil , "" , "零"]
if cnumber != "零"
char = "#{cnumber}#{bits[t]}"
elsif t-1 &>= 0 !i_array.include?(array[t-1]) !i_array.include?(!array[0])
char = "零"
else
char = ""
end
array.push char
end
array.reverse.join
end
end
1000000.times {|time| p "對不起,第#{time.to_chinese}遍" }
這樣的男友都能忍?真愛啊。。。。
這樣也有女朋友?
要是你和隔壁老王那什麼了,我覺得這樣偷工減料不太厚道
真的用excel就能搞定!都不用很複雜的,打個數字1然後調整顯示格式,用中文顯示,就可以啦!
arep(a,100000)
題主真是吃飽了撐著。。。
題外話:題主是作了什麼讓你男朋友對你下這樣的「重罪」?
晚上讓他別碰你,馬上老實了
其實樓主是男的,是被女朋友要求做這件事
這樣的男人都有女朋友?
unit &<- c("", "十", "百", "千", "萬", "十萬")
digit &<- c("壹", "貳", "叄", "肆", "伍", "陸", "柒", "捌", "玖")
result &<- c()
for(i in 1:1e5) {
n &<- nchar(i)
count &<- ""
for (j in 1:n) {
t &<- as.numeric(substr(i, j, j))
if (t==0 j!=1) {
num &<- "零"
} else num &<- paste0(digit[t], unit[n-j+1])
count &<- paste0(count, num)
}
count &<- gsub("^壹十", "十", count)
while (grepl("零零", count)) count &<- gsub("零零", "零", count)
count &<- gsub("零$", "", count)
result[i] &<- paste0("對不起! 第", count, "遍……")
}
writeLines(result,"QAQiAmSoSorry.txt")
隨機抽查:
對不起! 第柒萬壹千叄百零陸遍……對不起! 第伍千玖百貳十壹遍……對不起! 第玖萬叄千壹百捌十玖遍……
對不起! 第肆千伍百柒十叄遍……對不起! 第貳萬叄千玖百叄十肆遍……對不起! 第伍萬陸千零陸十陸遍……對不起! 第陸萬柒千捌百捌十陸遍……對不起! 第伍萬柒千零陸十玖遍……對不起! 第柒萬零叄百捌十捌遍……對不起! 第伍萬貳千零玖十捌遍……對不起! 第伍萬零柒百零貳遍……對不起! 第柒萬叄千叄百零玖遍……對不起! 第伍萬捌千陸百叄十壹遍……
對不起! 第壹萬玖千叄百肆十貳遍……對不起! 第肆萬壹千捌百貳十壹遍……對不起! 第壹萬玖千零陸十壹遍……對不起! 第貳萬肆千柒百零叄遍……對不起! 第伍千肆百壹十伍遍……對不起! 第叄萬零玖百伍十陸遍……對不起! 第捌萬伍千柒百玖十伍遍……有興趣的可以來此觀看注釋:「男友讓我打十萬個「對不起」,漢字標上多少遍。」這個問題用 R 如何實現?
package framework;
publicclass TestAAA {
static String[] oneToNine = {"","壹","貳","叄","肆","伍","陸","柒","捌","玖"};
static String[] tenTimes = {"","拾","百","仟","萬"};
publicstaticvoid main(String[] args) {
int max = 100000;
for (int i=1; i &<= max; i++) {
System.out.println(new StringBuilder("我愛你,第").append(builderResult(max, 1, i, new StringBuilder(), -1)));
}
}
publicstatic String builderResult(finalint max, int times, int rest, StringBuilder sb, int needZero) {
int result = rest / 10;
int tail = rest % 10;
StringBuilder temp = new StringBuilder();
if (tail != 0) {
temp.append(oneToNine[tail]);
temp.append(tenTimes[times-1]);
if (needZero &>= 1) {
temp = temp.append("零");
needZero = 0;
}elseif (needZero &< 0) {
needZero = 0;
}
sb = temp.append(sb);
}else {
if (times != 1 needZero &>= 0) {
needZero++;
}
}
if (Math.pow(10, times) &> max || result &<= 0) {
return sb.append("遍").toString();
}
returnbuilderResult(max, ++times, result, sb, needZero);
}
}
太無聊了,花了幾分鐘用JAVA寫了一遍,樓上的你們太天真了 1001,1020,50305,90030這種數字用漢字寫出來都是坑好嘛!! 哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈hhhhhhhhhhh
PS: 沒事說什麼對不起,說我愛你多合適~~咩哈哈哈哈~~~233333
分了,跟我吧!我肯定不忍心
雖然我是R的狂熱者,但不得不說,R真心不擅長跑for()語句。樓主可以考慮更快的C、JAVA或python來實現
這男的是馬屌彭于晏么
這樣的男朋友你還和他在一起...看來你真的很喜歡他
推薦閱讀:
※python有大量機器學習庫,但是不能結合hadoop,該如何實現大規模的機器學習?
※從零到搭建一個能提供API介面的網站,過程是怎樣的?
※定位後端開發,有哪些書籍值得推薦?
※哪裡能找到 Python 視頻教程地址?