2014-10-27 99 views
0

我只是找到了一個答案CodeGolf這裏http://repl.it/2Om/6紅寶石串重複而不整數

puts"The eight#{e="een-hundreds were a time for "}rum. 
The ninet#{e}fun. 
The two-thousands are a time to run 
a civilized classroom. 
"*(?X-??) 

原帖:https://codegolf.stackexchange.com/a/40250

我很好奇,它是如何工作的?我以前從未見過(?X-??)。這裏發生了什麼事?

+0

警告:代碼高爾夫是有趣的/好奇心,但是從不在生產代碼中使用它。只是作爲「呃,看看那個」的例子。與Perl和C/C++不同,Ruby嘗試使編寫與線性噪聲無法區分的代碼變得更加困難,但是可以通過努力來實現。對其他人實施這種做法是在代碼審查中受到批評的一種方式。 – 2014-10-27 16:55:28

回答

4

?Char給出Char的ASCII碼。

?X = "X".ord = 88 
?? = "?".ord = 63 
?X - ?? = 88-63 = 25 
There is your integer: 25 
Then "a"*25 = "aaaaaaaaaaaaaaaaaaaaaaaaa" 
+1

在最近的Ruby版本中,'?X'返回'「X」',而不是88. – Stefan 2014-10-27 15:23:09

+0

可能不在Ruby 1.5上,這是他運行代碼的版本。 – kyflare 2014-10-27 15:24:27

+0

我一直在爲此浪費時間。我嘗試在'irb'中運行'?X',''''&'?X - ??',但它一直在拋出一個錯誤。我再次檢查了repl鏈接,這段代碼適用於'Ruby 1.8'。感謝您的解釋。我現在可以睡了。 – 2014-10-27 15:26:44