Почему «0 не эквивалентно «_1, когда аргументы представляют собой одномерные массивы?

#j

#j

Вопрос:

Почему эти два выражения не эквивалентны в этой ситуации?

    0 1 2 ,"(0)/ 0 1
0 0
0 1

1 0
1 1

2 0
2 1

   0 1 2 ,"(_1)/ 0 1
|length error
|   0 1 2    ,"(_1)/0 1
 

На самом деле то, что я пытаюсь сделать…

 a =: 0 1 2 3 4 5 ; 0 1 2 ; 0 1
 

Хотите получить все возможные комбинации

 ,"0/amp;>/ a
 

Этот код не работает
Это работает, хотя:

 0 1 2 3 4 5 ,"(0 1)/ 0 1 2 ,"(0 0)/ 0 1
 

Но, конечно, я хочу писать в краткой форме

 ,"0/amp;>/ a
 

Проблема в том, что все термины должны быть

 ,"(0 1)/
 

но последнее

 ,"(0 0)/
 

Комментарии:

1. Я уже нашел еще один удивительный подход к получению этого результата: 6 3 2 #: i.6*3*2 Но я также хочу понять, как это сделать, используя косую черту через запятую.

2. Является ли это учебным упражнением? Вы против { a или > , { a против ?

3. Я изучаю J, решая Project Euler. Потрясающий язык 🙂

Ответ №1:

Возможно, это поможет, так как то, что он делает, — это просто добавление в ранг 0

     0  ,"(0)/ 0 1
0 0
0 1
      1  ,"(0)/ 0 1
1 0
1 1
      2  ,"(0)/ 0 1
2 0
2 1
 

Для реального решения проблемы, которую вы исследуете, вы заглянули в Каталог? {

    {a
┌─────┬─────┐
│0 0 0│0 0 1│
├─────┼─────┤
│0 1 0│0 1 1│
├─────┼─────┤
│0 2 0│0 2 1│
└─────┴─────┘

┌─────┬─────┐
│1 0 0│1 0 1│
├─────┼─────┤
│1 1 0│1 1 1│
├─────┼─────┤
│1 2 0│1 2 1│
└─────┴─────┘

┌─────┬─────┐
│2 0 0│2 0 1│
├─────┼─────┤
│2 1 0│2 1 1│
├─────┼─────┤
│2 2 0│2 2 1│
└─────┴─────┘

┌─────┬─────┐
│3 0 0│3 0 1│
├─────┼─────┤
│3 1 0│3 1 1│
├─────┼─────┤
│3 2 0│3 2 1│
└─────┴─────┘

┌─────┬─────┐
│4 0 0│4 0 1│
├─────┼─────┤
│4 1 0│4 1 1│
├─────┼─────┤
│4 2 0│4 2 1│
└─────┴─────┘

┌─────┬─────┐
│5 0 0│5 0 1│
├─────┼─────┤
│5 1 0│5 1 1│
├─────┼─────┤
│5 2 0│5 2 1│
└─────┴─────┘
 

Каталог соответствует таблице добавления:

   (>{a)-: 0 1 2 3 4 5 ,"(0 1)/ 0 1 2 ,"(0 0)/ 0 1
1
 

Комментарии:

1. Я подумывал о том , чтобы указать на , b. 0 , ,"0 b. 0 , и ,"_1 b. 0 . Хотите включить их в свой ответ?

2. О, да. Каталог, безусловно, является решением проблемы. Спасибо.

Ответ №2:

"_1 эквивалентно "0"_

Другими словами, «_1 формирует глагол, который просматривает все данные, чтобы найти свой ранг, а затем выводит другой глагол для работы на один ранг ниже этого.