关键是“汉字标上多少遍”。还有“对不起”必须是中文的。
男友让我打十万个「对不起」,汉字标上多少遍。如何快速实现? - 生活
<code class="language-text">library(foreach) map = function(Target, X,Y) { for (i in 1:length(X)) { Target[Target == X[i]] = Y[i] } return(Target) } Digital = c((1:9)*1000, (1:9)*100, (1:9)*10, 1:9, 0) Chs = c(paste(c("壹","贰","叁","肆","伍","陆","柒","捌","玖"), "仟", sep = ""), paste(c("壹","贰","叁","肆","伍","陆","柒","捌","玖"), "佰", sep = ""), paste(c("壹","贰","叁","肆","伍","陆","柒","捌","玖"), "拾", sep = ""), c("壹","贰","叁","肆","伍","陆","柒","捌","玖", "零")) change.simple = function(x) { xs = as.character(x) xa = foreach(i = 1:nchar(xs), .combine = "c") %do% { as.numeric(substr(xs,i,i))*(10^(nchar(xs) - i))} dup = which((xa[-1] == 0) & (xa[-length(xa)] == 0))+1 if (length(dup)>0) xa = xa[-dup] if (xa[length(xa)] == 0) xa = xa[-length(xa)] xa = map(xa, Digital, Chs) return(paste(xa, collapse="")) } change = function(x) { if (x>=10000) { if((x %/% 10000) %% 10 == 0) { if (x %% 10000 == 0) return(paste(change.simple(x %/% 10000), "万", sep = "")) else return(paste(change.simple(x %/% 10000), "万零", change.simple(x %% 10000), sep = "")) }else { if (x %% 10000</code>
<code class="language-rconsole"><span class="go">fuck <span class="go"> if (x == 100000) return("十万")</span> <span class="go"> digits = c("一", "二", "三", "四", "五", "六", "七", "八", "九")</span> <span class="go"> units = c("", "十", "百", "千", "万")</span> <span class="go"> x_vec = rev(as.numeric(unlist(strsplit(as.character(x), ""))))</span> <span class="go"> ans = ""</span> <span class="go"> reserve_0 = FALSE</span> <span class="go"> for(it in rev(seq(length(x_vec)))) {</span> <span class="go"> if (x_vec[it] != 0) {</span> <span class="go"> if (reserve_0) {</span> <span class="go"> ans = paste(ans, "零", sep = "")</span> <span class="go"> reserve_0 = FALSE</span> <span class="go"> }</span> <span class="go"> ans = paste(ans, digits[x_vec[it]], units[it], sep = "")</span> <span class="go"> } else {</span> <span class="go"> reserve_0 = TRUE</span> <span class="go"> }</span> <span class="go"> }</span> <span class="go"> if (x = 10)</span> <span class="go"> ans = substring(ans, 2, 10)</span> <span class="go"> return(ans)</span> <span class="go">}</span> <span class="go">#####################################################################</span> <span class="go">print(paste("对不起, 第", sapply(seq(1e5), fuck), "遍", sep = ""))</span> </span></code>
<code class="language-splus">charfunc<span class="o"><span class="kr">function</span><span class="p">(</span>x<span class="p">)</span> <span class="p">{</span> numb<span class="o"><span class="kt">c</span><span class="p">(</span><span class="s">'0'</span><span class="o">=</span><span class="s">'零'</span><span class="p">,</span><span class="s">'1'</span><span class="o">=</span><span class="s">'一'</span><span class="p">,</span><span class="s">'2'</span><span class="o">=</span><span class="s">'二'</span><span class="p">,</span><span class="s">'3'</span><span class="o">=</span><span class="s">'三'</span><span class="p">,</span><span class="s">'4'</span><span class="o">=</span><span class="s">'四'</span><span class="p">,</span><span class="s">'5'</span><span class="o">=</span><span class="s">'五'</span><span class="p">,</span><span class="s">'6'</span><span class="o">=</span><span class="s">'六'</span><span class="p">,</span> <span class="s">'7'</span><span class="o">=</span><span class="s">'七'</span><span class="p">,</span><span class="s">'8'</span><span class="o">=</span><span class="s">'八'</span><span class="p">,</span><span class="s">'9'</span><span class="o">=</span><span class="s">'九'</span><span class="p">)</span> <span class="kp">units</span><span class="o"><span class="kt">c</span><span class="p">(</span><span class="s">''</span><span class="p">,</span><span class="s">'十'</span><span class="p">,</span><span class="s">'百'</span><span class="p">,</span><span class="s">'千'</span><span class="p">,</span><span class="s">'万'</span><span class="p">,</span><span class="s">'十万'</span><span class="p">)</span> res1<span class="o"><span class="kp">as.character</span><span class="p">(</span>x<span class="p">)</span> res2<span class="o">numb<span class="p">[</span><span class="kp">unlist</span><span class="p">(</span><span class="kp">strsplit</span><span class="p">(</span>res1<span class="p">,</span><span class="s">''</span><span class="p">))]</span> res3<span class="o"><span class="kp">paste</span><span class="p">(</span>res2<span class="p">,</span><span class="kp">units</span><span class="p">[</span><span class="kp">length</span><span class="p">(</span>res2<span class="p">)</span><span class="o">:</span><span class="m">1</span><span class="p">],</span>sep<span class="o">=</span><span class="s">''</span><span class="p">,</span>collapse<span class="o">=</span><span class="s">''</span><span class="p">)</span> res4<span class="o"><span class="kp">gsub</span><span class="p">(</span><span class="s">'零\\w'</span><span class="p">,</span><span class="s">'零'</span><span class="p">,</span>res3<span class="p">)</span> res5<span class="o"><span class="kp">gsub</span><span class="p">(</span><span class="s">'零+'</span><span class="p">,</span><span class="s">'零'</span><span class="p">,</span>res4<span class="p">)</span> <span class="kp">gsub</span><span class="p">(</span><span class="s">'零$'</span><span class="p">,</span><span class="s">''</span><span class="p">,</span>res5<span class="p">)</span> <span class="p">}</span> sorry<span class="o"><span class="kt">data.frame</span><span class="p">(</span><span class="kp">paste</span><span class="p">(</span><span class="s">'对不起,第'</span><span class="p">,</span><span class="kp">apply</span><span class="p">(</span><span class="kt">matrix</span><span class="p">(</span><span class="m">1</span><span class="o">:</span><span class="m">100000</span><span class="p">),</span><span class="m">1</span><span class="p">,</span>charfunc<span class="p">),</span><span class="s">'遍'</span><span class="p">,</span>sep<span class="o">=</span><span class="s">''</span><span class="p">),</span> stringsAsFactors<span class="o">=</span><span class="bp">F</span><span class="p">)</span> <span class="kp">names</span><span class="p">(</span>sorry<span class="p">)</span><span class="o"><span class="s">'sorry'</span> <span class="kp">head</span><span class="p">(</span>sorry<span class="p">)</span> <span class="kp">tail</span><span class="p">(</span>sorry<span class="p">)</span> </span></span></span></span></span></span></span></span></span></span></code>
<code class="language-rb"><span class="k">class</span> <span class="nc">Fixnum</span> <span class="k">def</span> <span class="nf">to_chinese</span> <span class="n">length</span> <span class="o">=</span> <span class="nb">self</span><span class="o">.</span><span class="n">to_s</span><span class="o">.</span><span class="n">length</span> <span class="n">array</span> <span class="o">=</span> <span class="o">[]</span> <span class="n">time</span> <span class="o">=</span> <span class="n">length</span> <span class="o">%</span> <span class="mi">4</span> <span class="o">==</span> <span class="mi">0</span> <span class="o">?</span> <span class="n">length</span> <span class="o">/</span> <span class="mi">4</span> <span class="p">:</span> <span class="n">length</span> <span class="o">/</span> <span class="mi">4</span> <span class="o">+</span> <span class="mi">1</span> <span class="n">chars</span> <span class="o">=</span> <span class="s1">'亿万 '</span><span class="o">[</span><span class="mi">3</span> <span class="o">-</span> <span class="n">time</span> <span class="p">,</span> <span class="mi">3</span><span class="o">]</span> <span class="n">time</span><span class="o">.</span><span class="n">downto</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span> <span class="k">do</span> <span class="o">|</span><span class="n">t</span><span class="o">|</span> <span class="n">start</span> <span class="o">=</span> <span class="p">(</span><span class="n">t</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> <span class="o">*</span> <span class="mi">4</span> <span class="o">+</span> <span class="n">length</span> <span class="o">%</span> <span class="mi">4</span> <span class="n">cut_start</span> <span class="o">=</span> <span class="n">start</span> <span class="o"> <span class="mi">0</span> <span class="o">?</span> <span class="mi">0</span> <span class="p">:</span> <span class="n">start</span> <span class="n">cut_length</span> <span class="o">=</span> <span class="n">start</span> <span class="o"> <span class="mi">0</span> <span class="o">?</span> <span class="mi">4</span> <span class="o">+</span> <span class="n">start</span> <span class="p">:</span> <span class="mi">4</span> <span class="n">cut</span> <span class="o">=</span> <span class="nb">self</span><span class="o">.</span><span class="n">to_s</span><span class="o">[</span><span class="n">cut_start</span> <span class="p">,</span> <span class="n">cut_length</span><span class="o">]</span> <span class="k">unless</span> <span class="n">cut</span> <span class="o">==</span> <span class="s1">''</span> <span class="n">ch</span> <span class="o">=</span> <span class="n">cut</span><span class="o">.</span><span class="n">to_i</span><span class="o">.</span><span class="n">to_ch</span> <span class="n">array</span><span class="o">.</span><span class="n">push</span> <span class="s2">"</span><span class="si">#{</span><span class="n">ch</span><span class="si">}#{</span><span class="n">chars</span><span class="o">[</span><span class="n">t</span><span class="o">]</span><span class="si">}</span><span class="s2">"</span> <span class="k">unless</span> <span class="n">ch</span> <span class="o">==</span> <span class="s1">''</span> <span class="k">end</span> <span class="k">end</span> <span class="n">array</span><span class="o">.</span><span class="n">reverse</span><span class="o">.</span><span class="n">join</span><span class="o">.</span><span class="n">delete</span><span class="p">(</span><span class="s1">' '</span><span class="p">)</span> <span class="k">end</span> <span class="k">def</span> <span class="nf">to_ch</span> <span class="n">chars</span> <span class="o">=</span> <span class="s1">'零一二三四五六七八九'</span> <span class="n">bits</span> <span class="o">=</span> <span class="s1">' 十百千'</span> <span class="n">array</span> <span class="o">=</span> <span class="o">[]</span> <span class="nb">self</span><span class="o">.</span><span class="n">to_s</span><span class="o">.</span><span class="n">length</span><span class="o">.</span><span class="n">times</span> <span class="k">do</span> <span class="o">|</span><span class="n">t</span><span class="o">|</span> <span class="n">cnumber</span> <span class="o">=</span> <span class="n">chars</span><span class="o">[</span><span class="nb">self</span><span class="o">.</span><span class="n">to_s</span><span class="o">.</span><span class="n">reverse</span><span class="o">[</span><span class="n">t</span><span class="o">].</span><span class="n">to_i</span><span class="o">]</span> <span class="n">i_array</span> <span class="o">=</span> <span class="o">[</span><span class="kp">nil</span> <span class="p">,</span> <span class="s1">''</span> <span class="p">,</span> <span class="s1">'零'</span><span class="o">]</span> <span class="k">if</span> <span class="n">cnumber</span> <span class="o">!=</span> <span class="s1">'零'</span> <span class="n">char</span> <span class="o">=</span> <span class="s2">"</span><span class="si">#{</span><span class="n">cnumber</span><span class="si">}#{</span><span class="n">bits</span><span class="o">[</span><span class="n">t</span><span class="o">]</span><span class="si">}</span><span class="s2">"</span> <span class="k">elsif</span> <span class="n">t</span><span class="o">-</span><span class="mi">1</span> <span class="o">>=</span> <span class="mi">0</span> <span class="o">&&</span> <span class="o">!</span><span class="n">i_array</span><span class="o">.</span><span class="n">include?</span><span class="p">(</span><span class="n">array</span><span class="o">[</span><span class="n">t</span><span class="o">-</span><span class="mi">1</span><span class="o">]</span><span class="p">)</span> <span class="o">&&</span> <span class="o">!</span><span class="n">i_array</span><span class="o">.</span><span class="n">include?</span><span class="p">(</span><span class="o">!</span><span class="n">array</span><span class="o">[</span><span class="mi">0</span><span class="o">]</span><span class="p">)</span> <span class="n">char</span> <span class="o">=</span> <span class="s1">'零'</span> <span class="k">else</span> <span class="n">char</span> <span class="o">=</span> <span class="s1">''</span> <span class="k">end</span> <span class="n">array</span><span class="o">.</span><span class="n">push</span> <span class="n">char</span> <span class="k">end</span> <span class="n">array</span><span class="o">.</span><span class="n">reverse</span><span class="o">.</span><span class="n">join</span> <span class="k">end</span> <span class="k">end</span> <span class="mi">1000000</span><span class="o">.</span><span class="n">times</span> <span class="p">{</span><span class="o">|</span><span class="n">time</span><span class="o">|</span> <span class="nb">p</span> <span class="s2">"对不起,第</span><span class="si">#{</span><span class="n">time</span><span class="o">.</span><span class="n">to_chinese</span><span class="si">}</span><span class="s2">遍"</span> <span class="p">}</span> </span></span></code>
你不是擅长R话题么。。。。。。
<code class="language-text">unit </code>
<code class="language-python"><span class="n">CHINESE_DIGITS</span> <span class="o">=</span> <span class="s">'零一二三四五六七八九'</span> <span class="n">CHINESE_UNITS</span> <span class="o">=</span> <span class="p">(</span><span class="s">''</span><span class="p">,</span><span class="s">'十'</span><span class="p">,</span><span class="s">'百'</span><span class="p">,</span><span class="s">'千'</span><span class="p">,</span><span class="s">'万'</span><span class="p">)</span> <span class="k">def</span> <span class="nf">tslt_le4</span><span class="p">(</span><span class="n">intnum</span><span class="p">):</span> <span class="n">lststr</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">intnum</span><span class="p">)</span><span class="o">.</span><span class="n">zfill</span><span class="p">(</span><span class="mi">4</span><span class="p">)[::</span><span class="o">-</span><span class="mi">1</span><span class="p">])</span> <span class="n">units</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">CHINESE_UNITS</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="k">if</span> <span class="n">lststr</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">!=</span> <span class="s">'0'</span> <span class="k">else</span> <span class="s">''</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">4</span><span class="p">))</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">3</span><span class="p">):</span> <span class="k">if</span> <span class="n">lststr</span><span class="p">[</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">]</span> <span class="o">==</span> <span class="s">'0'</span> <span class="ow">and</span> <span class="n">lststr</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">==</span> <span class="s">'0'</span><span class="p">:</span> <span class="n">lststr</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="s">''</span> <span class="k">else</span><span class="p">:</span> <span class="k">if</span> <span class="n">lststr</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span> <span class="o">==</span> <span class="s">'0'</span><span class="p">:</span> <span class="n">lststr</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span> <span class="o">=</span> <span class="s">''</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">4</span><span class="p">):</span> <span class="k">if</span> <span class="n">lststr</span><span class="p">[</span><span class="n">i</span><span class="p">]:</span> <span class="n">lststr</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">CHINESE_DIGITS</span><span class="p">[</span><span class="nb">int</span><span class="p">(</span><span class="n">lststr</span><span class="p">[</span><span class="n">i</span><span class="p">])]</span> <span class="n">result</span> <span class="o">=</span> <span class="s">''</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">lststr</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">+</span> <span class="n">units</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">))</span> <span class="n">result</span> <span class="o">=</span> <span class="n">result</span><span class="p">[:</span><span class="o">-</span><span class="mi">3</span><span class="p">]</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s">'二'</span><span class="p">,</span> <span class="s">'两'</span><span class="p">)</span> <span class="o">+</span> <span class="n">result</span><span class="p">[</span><span class="o">-</span><span class="mi">3</span><span class="p">:]</span> <span class="n">result</span> <span class="o">=</span> <span class="n">result</span><span class="o">.</span><span class="n">rstrip</span><span class="p">(</span><span class="s">'零'</span><span class="p">)</span> <span class="k">return</span> <span class="n">result</span> <span class="k">def</span> <span class="nf">tslt_le8</span><span class="p">(</span><span class="n">intnum</span><span class="p">):</span> <span class="n">leftint</span> <span class="o">=</span> <span class="n">intnum</span><span class="o">//</span><span class="mi">10</span><span class="o">**</span><span class="mi">4</span> <span class="n">rightint</span> <span class="o">=</span> <span class="n">intnum</span><span class="o">%</span><span class="mi">10</span><span class="o">**</span><span class="mi">4</span> <span class="n">left</span> <span class="o">=</span> <span class="n">tslt_le4</span><span class="p">(</span><span class="n">leftint</span><span class="p">)</span> <span class="k">if</span> <span class="n">left</span><span class="p">:</span> <span class="n">left</span> <span class="o">+=</span> <span class="s">'万'</span> <span class="n">rightint</span> <span class="o">=</span> <span class="n">intnum</span><span class="o">%</span><span class="mi">10</span><span class="o">**</span><span class="mi">4</span> <span class="n">right</span> <span class="o">=</span> <span class="n">tslt_le4</span><span class="p">(</span><span class="n">rightint</span><span class="p">)</span> <span class="k">if</span> <span class="n">leftint</span> <span class="ow">and</span> <span class="mi">0</span> <span class="o"> <span class="n">rightint</span> <span class="o"> <span class="mi">1000</span><span class="p">:</span> <span class="n">right</span> <span class="o">=</span> <span class="s">'零'</span> <span class="o">+</span> <span class="n">right</span> <span class="n">result</span> <span class="o">=</span> <span class="n">left</span> <span class="o">+</span> <span class="n">right</span> <span class="k">if</span> <span class="n">result</span> <span class="o">==</span> <span class="s">''</span><span class="p">:</span> <span class="n">result</span> <span class="o">=</span> <span class="s">'零'</span> <span class="k">if</span> <span class="n">result</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s">'一十'</span><span class="p">):</span> <span class="n">result</span> <span class="o">=</span> <span class="n">result</span><span class="p">[</span><span class="mi">1</span><span class="p">:]</span> <span class="k">return</span> <span class="n">result</span> <span class="k">if</span> <span class="n">__name__</span> <span class="o">==</span> <span class="s">"__main__"</span><span class="p">:</span> <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="s">'sorry.txt'</span><span class="p">,</span><span class="s">'w'</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">100001</span><span class="p">):</span> <span class="n">sorry_str</span> <span class="o">=</span> <span class="s">'对不起 第{}遍</span><span class="se">\n</span><span class="s">'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">tslt_le8</span><span class="p">(</span><span class="n">i</span><span class="p">))</span> <span class="n">f</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">sorry_str</span><span class="p">)</span> </span></span></code>