我需要計算可能由滾動K個骰子產生的不同可能卷數,每個骰子都有N個邊。我對roll的定義是像{1,1,2,3,4}等於{1,4,3,1,2}(順序無關緊要),但不等於{1,1,3 ,3,3}(它們不是同一組結果)。例如:Yahtzee是一個遊戲,至少在初始階段至少在開始滾動5個6面骰子—之前,在重新滾動—之前,不同滾動的數量因此是252。當N = K時的情況導致OEIS sequence A001700。 (N-1 + K)選擇(N-1)「,或等同地,」(N + K-1)選擇K「,這是K ! <: K + N
如果我沒有可怕的錯誤這導致我四種不同的默契表示:K個N面骰子的不同卷數
d =: ([ ! [: <: +)
。簡單的火車,沒有括號,但我需要使用一個帽子。d =: ([ (! <:) +)
。沒有帽子,但用內括號括起來。d =: (] !&<: +)
。只有三個動詞訓練,但使用Compose。它使用(<: N) ! <: K + N
版本。d =: (([ ! +) * ] % +)
。這一個將「C(N + K-1,K)」重寫爲「C(N + K,K)* N /(N + K)」。這是醜陋的,但在0方面的情況下,它給出0而不是1,這可以說是一個不太荒謬的答案。
哪些是最「J-ish」解決方案?
另外,所有這些的一次性情況是沒有意義的:前三位的1 0 0 0 0 ...
和第四位的0 1 1 1 ...
。對這個動詞來說,更合乎邏輯的monad是自反性的,如d~
所給出的,那麼將這個動詞定義爲(d~ : d)
會更好嗎?
我分享您的偏好。如果零滾動或骰子是想要產生零結果,我會使
[ (! <:) +
這個更寬的叉的右尖:*&* * ([ (! <:) +)
– kaleidic我不知道如何使評論實際顯示代碼。在原動詞的左邊應該是star-ampersand-star-space-star。 (當然,這個空間是裝飾性的,而不是語義的。) – kaleidic
哦,所以你的意思是'(*&* * [(!<:) +)'?現在有一個想法。你不能只簽署該產品,因爲我認爲1種方式與N面滾動0骰子使組合意義。但是,這個想法導致我們「(* @] * [(!<:) +)',這符合法案。太好了! – algorithmshark