Как я могу заполнить массив 2d в clojure циклической матрицей, которую мы делаем в JAVA, если у меня есть список символов

Я хочу заполнить 2d-массив в clojure, как мы это делаем в java

Я привел пример java. Я хочу сделать это в Clojure

Scanner sc=new Scanner(System.in);
Scanner sc1=new Scanner(System.in);
int row=sc.nextInt();
int col=sc.nextInt();
realMatrix=new String[row][col];
String[] in=new String[row];
for(int k=0;k<row;k++) {
    in[k]=sc1.nextLine();
}
for(int i=0;i<row;i++) {
    char[] charArry=in[i].toCharArray();
    for(int j=0;j<col;j++) {
        realMatrix[i][j]=Character.toString(charArry[j]);
    }
}

Возможный дубликат Обработка файла посимвольно в Clojure

Alan Thompson 28.05.2019 05:33

Пожалуйста, добавьте код, который вы пробовали, и проблемы, с которыми вы столкнулись. А поскольку Clojure работает на JVM, вы можете с таким же успехом повторно использовать свой существующий Java-код.

cfrick 28.05.2019 09:39
Структурированный массив Numpy
Структурированный массив Numpy
Однако в реальных проектах я чаще всего имею дело со списками, состоящими из нескольких типов данных. Как мы можем использовать массивы numpy, чтобы...
T - 1Bits: Генерация последовательного массива
T - 1Bits: Генерация последовательного массива
По мере того, как мы пишем все больше кода, мы привыкаем к определенным способам действий. То тут, то там мы находим код, который заставляет нас...
Что такое деструктуризация массива в JavaScript?
Что такое деструктуризация массива в JavaScript?
Деструктуризация позволяет распаковывать значения из массивов и добавлять их в отдельные переменные.
2
2
145
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если ваш ввод (lines) действителен (он содержит правильное количество строк, и каждая строка содержит правильное количество символов), его можно проанализировать с помощью

(vec (map #(clojure.string/split % #"") (drop 2 lines)))

Если ваш ввод выглядит как lines ниже, вам нужно отфильтровать !s:

(def lines
  ["3"
   "5"
   "abcde!!!"
   "FGHIJ!!!"
   "klmno!!!"
   "!!!!!!!!"
   "!!!!!!!!"])

(defn split-row [row n-cols]
  (vec (take n-cols (clojure.string/split row #""))))

(defn parse-matrix [lines]
  (let [n-rows (Integer. (first lines))
        n-cols (Integer. (second lines))
        matrix-lines (take n-rows (drop 2 lines))]
    (vec (map #(split-row % n-cols) matrix-lines))))

Если вы действительно хотите проанализировать его, поскольку он читается со стандартного ввода:

(defn parse-matrix-stdin []
  (let [n-rows (Integer. (read-line))
        n-cols (Integer. (read-line))
        matrix-lines (take n-rows (repeatedly read-line))]
    (vec (map #(split-row % n-cols) matrix-lines))))

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