2013-07-16 26 views
2

我使用編程語言:J.在J中列出數字的位數

我想將一個數字的全部數字放在一個列表中。

來源:

12345 

到:

1 2 3 4 5 

我能做些什麼?

+0

將int轉換爲字符串,比在字符串長度的循環中獲得每一個。或者當結果大於10時將整數除以10。 –

+0

如何將單選元素附加到列表中? 使用隱式函數?(不帶for循環) –

+0

可能是您的編程語言具有將字符串拆分爲數組的相同方法。 –

回答

1

另一種方法:

intToList =: 3 : '((>. 10 ^. y)#10) #: y' 

這不轉換爲字符串和背部,這可能是潛在的昂貴,但有一個鹼基計數數字10日誌,然後使用反基地(#:)獲取每個數字。

編輯:

更好,更安全版本的基礎上丹布龍的評論:

intToList =: 3 : '10 #.^:_1 y' 
+0

我愛你的方式!好的代碼+ 1 –

+1

是的,這是一個不錯的方法。請注意,當y爲0或10的冪時,短語'(>。10 ^。y)'具有小缺陷:嘗試'intToList 0'或'intToList 1000'。我們可以直接使用'#:'的反轉來改進解決方案,如'10#。^:_ 1 y'或者從它的實現中提示並將'intToList'重寫爲'3:'1 + 10 <[email protected]^. 1 >。 y'' –

+0

@DanBron感謝您的選擇。是的,最好不要使用日誌... – MPelletier

5

我會寫這樣的方式是

10&#.^:_1 

,我們可以在使用中看到這句子:

(10&#.^:_1) 123456789 
1 2 3 4 5 6 7 8 9 

該程序依賴於內置到Base的重塑。它使用Base的(內置)正面作爲Antibase的同義詞。

相關問題