kitsu
Чегот не догоняю, где накосячил, кодес:
`File::open(fname).expect(&("cannot open ".to_owned() + fname))`
Cat
ну по идее
https://play.rust-lang.org/?gist=6e3c126f929ec25ad1b6910a55662d43&version=stable
Dmitry
Αλεχ
extern crate ndarray;
use ndarray::prelude::*;
fn get_map(n: usize) -> Result<Array2<Option<char>>, &'static str>{
if n <= 0 || n > 27 {
return Err("Invalid input");
}
let board_size = 2*n-1;
let mut result = Array2::<Option<char>>::default((board_size, board_size));
let middle_index = board_size/2+1;
for i in 0..middle_index {
for j in 0..middle_index {
let index = 2 * n - i - j - 2;
let letter = if index >= n { None } else { Some(('a' as u8 + index as u8) as char) };
result[[i, j]] = letter;
result[[board_size - i - 1, j]] = letter;
result[[i, board_size - j - 1]] = letter;
result[[board_size - i - 1, board_size - j - 1]] = letter;
}
}
Ok(result)
}
fn main() {
let arr = get_map(5).unwrap();
for i in 0..arr.len_of(Axis(0)) {
for j in 0..arr.len_of(Axis(1)) {
print!("{}", arr[[i,j]].unwrap_or('-'));
}
println!();
}
}
Αλεχ
----e----
---ede---
--edcde--
-edcbcde-
edcbabcde
-edcbcde-
--edcde--
---ede---
----e----
Dmitry
а с 0. Ты там юзаешь что то
Dmitry
яне такой осилятор
Berkus
Dmitry
fn draw(data: &VecDeque<char>) {
let data = data
.into_iter()
.map(|c| c.to_string() + "-")
.collect::<String>();
println!("{}", data)
}
Dmitry
пойдет ?
Cat
пойдет ?
ага, или data.iter().map(|c| c.to_string()).collect::<Vec<String>>().join(" - ");
Dmitry
я сдулся. Пздц
Dmitry
1/4ю только и вывел криво
Cat
Cat
а-ля a-b-c-
Dmitry
а почему на чараз не смог джоин сделать
Cat
потому что join можно сделать по коллекции со String
Dmitry
как иначе
Cat
Денис
Dmitry
работает
Денис
ну на мой субъективный взгляд это банально проще :) правда там по-разному с наличием/отсутствием пробелов вокруг дефиса
Dmitry
в map можно интекс узнать ?
Berkus
мап он весь из индексов и состоит
Dmitry
ну как на текущей итерации узнать индекс
Cat
Cat
Просто не будет ли последний символ дополнен trailing сепаратором?
Dmitry
Dmitry
a-b-c-d-e
b-c-d-e-
c-d-e--
d-e---
e----
и тут как то не то
Денис
тебе про итертулс уже говорили?
Денис
который умеет вставлять разделитель МЕЖДУ элементами?
Dmitry
вроде нет
Dmitry
как это называется
Денис
тот пример с джойном
-__-
https://play.rust-lang.org/?gist=c01447fa3c72fc0dc09635fb21d6b9ff&version=stable
Денис
https://docs.rs/itertools/0.7.8/itertools/fn.join.html
-__-
Палю "годноту".
Денис
Денис
=)))
Cat
Dmitry
Денис
в смысле ставить?)
Dmitry
он в коре ? Или это либа ?
Денис
при всём уважении, может перед тем, как что-то пилить, стоит сделать упражнения из гайдбука?)
Dmitry
делал D. И прочитал
Денис
а то так сходу, не зная языка, можно такого наворотить, что всю охоту отобьёт
Dmitry
я самое простое что то сделать даже не могу
Денис
это не самое простое
Dmitry
Dmitry
Денис
Денис
я не знаю, что такое вторая часть, но вторую редакцию точно стоит читать
Денис
https://doc.rust-lang.org/book/second-edition/
Cat
Cat
Это не самое простое, в C++ было бы не проще
Денис
Dmitry
Денис
@userbq201 зацени https://github.com/rustlings/rustlings
Cuno
Αλεχ
extern crate ndarray;
use ndarray::prelude::*;
fn get_map(n: usize) -> Result<Array2<Option<char>>, &'static str>{
if n <= 0 || n > 27 {
return Err("Invalid input");
}
let board_size = 2*n-1;
let mut result = Array2::<Option<char>>::default((board_size, board_size));
let middle_index = board_size/2+1;
for i in 0..middle_index {
for j in 0..middle_index {
let index = 2 * n - i - j - 2;
let letter = if index >= n { None } else { Some(('a' as u8 + index as u8) as char) };
result[[i, j]] = letter;
result[[board_size - i - 1, j]] = letter;
result[[i, board_size - j - 1]] = letter;
result[[board_size - i - 1, board_size - j - 1]] = letter;
}
}
Ok(result)
}
fn main() {
let arr = get_map(5).unwrap();
for i in 0..arr.len_of(Axis(0)) {
for j in 0..arr.len_of(Axis(1)) {
print!("{}", arr[[i,j]].unwrap_or('-'));
}
println!();
}
}
Αλεχ
----e----
---ede---
--edcde--
-edcbcde-
edcbabcde
-edcbcde-
--edcde--
---ede---
----e----
Αλεχ
блин
Αλεχ
это работает
Αλεχ
@userbq201 что тебе еще надо?)
Dmitry
я и так не осилятор
Dmitry
а еще и либы сторонние
Αλεχ
это потому что раст не умеет в массивы с неизвестным на этапе компиляции N
Αλεχ
тут вся сторонняя зависимость - это двумерный массив
Αλεχ
чтобы не трахать мозги с Vec<Vec<>>
Marat
Cat
Marat
Чому?
Потому что чар банально больше памяти занимает