Самый краткий j синтаксис для создания числовой матрицы

StackOverflow https://stackoverflow.com/questions/3738952

  •  03-10-2019
  •  | 
  •  

Вопрос

Представьте, что я хочу взять цифры от 1 до 3 и образуйте матрицу, так что каждая возможная сопряжение представлена, например,

1 1
1 2
1 3
2 1
2 2
2 3
3 1
3 2
3 3

Вот монадический глагол, который я сформулировал в J, чтобы сделать это:

($ ~ (-: @ #, 2 :)), "0 / ~ 1 + IY

Первоначально я думал, что ,"0/~ 1+i.y было бы достаточно, но, к сожалению, что производит следующий вывод:

1 1
1 2
1 3

2 1
2 2
2 3

3 1
3 2
3 3

Другими словами, его форма составляет 3 3 2, и я хочу что-то, чья форма 9 2. Единственный способ, которым я мог думать о том, чтобы исправить это - это налить все данные в новую форму. Я убежден, что должен быть более лаконичный способ сделать это. Кто-нибудь знает?

Это было полезно?

Решение

Один путь (который использует { Как монад в его мощности для каталогизации перестановки):

>,{ 2#<1+i.y

РЕДАКТИРОВАТЬ:

Некоторые веселые, которые будут иметь с этой схемой:

Все возможные перестановки:

>,{ y#<1+i.y

Настраиваемое число в последовательности:

>,{ x#<1+i.y

Другие советы

Изменение вашего промежуточного результата может быть упрощена. Удаление самой верхней оси обычно делается с ,/ Так что в вашем случае завершенная фраза может быть ,/ ,"0/~ 1+i.y

Я понимаю, что этот вопрос старый, но есть более простой способ сделать это: сосчитать до 9 в дворике, и добавьте 1.

   1 + 3 3 #: i.9
1 1
1 2
1 3
2 1
2 2
2 3
3 1
3 2
3 3

То 3 3 & #: дает вам две цифры. Общая «База 3» глагол 3 & #.^:_1.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top