bazooka
написал 10 апреля 2009 года в 23:19 (890 просмотров)
Ведет себя
неопределенно; открыл 1 тему в форуме, оставил 5 комментариев на сайте.
sub scan { my ($f, $l, $r)=@_; my @res=([$l, $r]); my ($c_on, $c_off)=(0, 1); foreach ([0, 1], [0, -1], [1, 0], [-1, 0]) { my ($dl, $dr)=@$_; my ($a, $b)=($l, $r); foreach (1..3) { $a+=$dl; $b+=$dr; last if ($a<0 or $a>9 or $b<0 or $b>9); if ($f->[$a][$b] == 1) { $c_on++; push @res, [$a, $b]; } elsif ($f->[$a][$b] == 4) { $c_off++; push @res, [$a, $b]; } else { last; } } } return (\@res, $c_on, $c_off); }
че делает эта функция?
параметры ее:
$f — двумерная матрица 10х10
$l, $r — числа
переведите если можно на пхп или питон
Последние комментарии
- OlegL, 17 декабря в 15:00 → Перекличка 21
- REDkiy, 8 июня 2023 года в 9:09 → Как «замокать» файл для юниттеста в Python? 2
- fhunter, 29 ноября 2022 года в 2:09 → Проблема с NO_PUBKEY: как получить GPG-ключ и добавить его в базу apt? 6
- Иванн, 9 апреля 2022 года в 8:31 → Ассоциация РАСПО провела первое учредительное собрание 1
- Kiri11.ADV1, 7 марта 2021 года в 12:01 → Логи catalina.out в TomCat 9 в формате JSON 1
ecobeing.ru
Экология и вегетарианство на благо всем живым существам Планеты.
Определяет количество чего-то в окрестностях точки.
$f->[$a][$b]
это просто взять значение с координатами а и б? Не какая-то фунция?
да
Что бы было понятнее, $f — это не массив, а ссылка на него.
Еще одна функция, вроде должна расставлять корабли, помогите с переводом на питон
##################################
sub create_field {
return [map {[map {0} (0..9)]} (0..9)];
}
sub set_ships {
my $f=create_field();
foreach my $len qw/4 3 3 2 2 2 1 1 1 1/ {
# ищем куда можно поставить
# формируем массив возможностей
my @ww=();
foreach my $d qw/1 2/ {
my ($lo, $ro, $dl, $dr)=$d==2?(9, 10-$len, 0, 1):(10-$len, 9, 1, 0);
foreach my $l (0..$lo) {
foreach my $r (0..$ro) {
my ($a, $b, $c)=($l, $r, 0);
foreach my $i (0..$len-1) {
$c++ if ($f->[$a][$b]==0);
$a+=$dl;
$b+=$dr;
}
if ($c==$len) {
push @ww, [$l, $r, $d];
}
}
}
}
die unless (@ww); # невероятная ситуация
# выбираем случайный
my ($l, $r, $d)=@{$ww[int(rand(@ww))]};
# устанавливаем
my ($l1, $l2, $r1, $r2)=map {$_<0?0:$_>9?9:$_}
$d==2?($l-1, $l+1, $r-1, $r+$len):
($l-1, $l+$len, $r-1, $r+1);
foreach my $a ($l1..$l2) {
foreach my $b ($r1..$r2) {
$f->[$a][$b]=2;
}
}
my ($dl, $dr)=$d==2?(0, 1):(1, 0);
foreach my $i (0..$len-1) {
$f->[$l][$r]=1;
$l+=$dl;
$r+=$dr;
}
}
return [map {[map {$_==1?1:0} @$_]} @$f];
}
ужасно «красивый» этот перл (
Какой автор кода, такой и код. Это не от языка зависит.
согласен, но язык тоже влияет на автора
а па теме мб ктонить хотябы прокомментирует? )
Не влияет. Т.е. влияет, но не в этом.
По теме: зачем делать за тебя твою работу? Там разобраться можно за час, даже если иметь только базовые знания. Если бы ты не жевал сопли и не ждал, что само с неба упадёт, давно бы уже разобрался.
Я никого не заставляю делать за меня мою работу, я просил помощи. Сопли я не жую и написал функцию эту уже снуля. Сомневаюс что тут «за час» можно разобраться — foreach my $d qw/1 2/ О,о
спасиба народ, тему клоуз
а что не так с foreach my $d qw/1 2/? Ну написано дебилом, конечно, но ясно же, что это for my $d («1», «2»).