Я использую язык программирования: J.Перечислите цифры числа в J
Я хочу поместить всю цифру числа в список.
От:
12345
к:
1 2 3 4 5
Что я могу сделать?
Я использую язык программирования: J.Перечислите цифры числа в J
Я хочу поместить всю цифру числа в список.
От:
12345
к:
1 2 3 4 5
Что я могу сделать?
Другой подход:
intToList =: 3 : '((>. 10 ^. y)#10) #: y'
Это не преобразуется в строку и обратно, которые могут быть потенциально дорогостоящим, но считает цифры с корпус- 10, затем использует анти-базу (#:
), чтобы получить каждую цифру.
EDIT:
лучше, безопаснее версия, основанная на комментарий Dan Брон в:
intToList =: 3 : '10 #.^:_1 y'
Я люблю свой путь! Хороший код. + 1 –
Да, это хороший подход. Обратите внимание, что фраза '(>. 10 ^. Y)' имеет небольшой недостаток, когда y равно 0 или степени 10: try 'intToList 0' или' intToList 1000'. Мы можем улучшить решение, используя обратное к '#:' непосредственно, как в '10 #. ^: _ 1 y', или сделав намек на его реализацию и переписывая' intToList' как '3: '1 + 10 <[email protected]^. 1 >. y'' –
@DanBron Спасибо за альтернативу. Да, лучше не использовать журнал ... – MPelletier
Я нашел ответ:
intToList =: ("[email protected];"[email protected]":)
лить int в строку, чем в цикле длины строки, получить каждый из них. Или разделите int на 10, тогда как результат будет больше 10. –
Как добавить элементы синглов в список? И с неявной функцией? (Без цикла for) –
может быть, ваш язык программирования имеет те же методы, которые разделяют строку на массив. –