2015-05-21 3 views

ответ

4

Да, J-путь заключается в использовании 3 уровня бокса:

(<<<5) { i.10 
0 1 2 3 4 6 7 8 9 

(<<<1 3) { i.10 
0 2 4 5 6 7 8 9 

Это небольшая заметка в dictionary for {:

Обратите внимание, что в результате в самом последнем диадическоге примера , то есть (< < < _1) {m, все, кроме последнего элемента.

и еще немного в Learning J: Chapter 6 - Indexing: 6.2.5 Excluding Things.

+0

Это очень необычный синтаксис, но, безусловно, проще, чем мой путь. –

+1

Ваш способ значительно эффективнее удалить один элемент. Вероятно, это наиболее эффективно (по крайней мере, между использованием '{', '; .' или'/.'). – Eelvex

3

Другой подход заключается в использовании монадических и двоичных форм # (Tally and Copy). Эта идиома использования Копии для удаления элемента - это то, что я часто использую.

Крюк (i. [email protected]#) использует Талли (монадическая #) и монадические и двоично i. (Целые и индекс) для создания строки фильтра:

2 (i. [email protected]#) 'abcde' 
1 1 0 1 1 

которого Copy (диадические #) использует опустить соответствующий пункт.

2 ((i. [email protected]#) # ]) 0 1 2 3 4 5 
0 1 3 4 5 
    2 ((i. [email protected]#) # ]) 'abcde' 
abde