bazooka
			
				написал 10 апреля 2009 года в 23:19 (990 просмотров)
			
			
			Ведет себя
			неопределенно; открыл 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 декабря 2023 года в 15:00            →
        
        
            Перекличка
            21 OlegL, 17 декабря 2023 года в 15:00            →
        
        
            Перекличка
            21
-   REDkiy, 8 июня 2023 года в 9:09            →
        
        
            Как «замокать» файл для юниттеста в Python?
            2 REDkiy, 8 июня 2023 года в 9:09            →
        
        
            Как «замокать» файл для юниттеста в Python?
            2
-   fhunter, 29 ноября 2022 года в 2:09            →
        
        
            Проблема с NO_PUBKEY: как получить GPG-ключ и добавить его в базу apt?
            6 fhunter, 29 ноября 2022 года в 2:09            →
        
        
            Проблема с NO_PUBKEY: как получить GPG-ключ и добавить его в базу apt?
            6
-   Иванн, 9 апреля 2022 года в 8:31            →
        
        
            Ассоциация РАСПО провела первое учредительное собрание
            1 Иванн, 9 апреля 2022 года в 8:31            →
        
        
            Ассоциация РАСПО провела первое учредительное собрание
            1
-   Kiri11.ADV1, 7 марта 2021 года в 12:01            →
        
        
            Логи catalina.out в TomCat 9 в формате JSON
            1 Kiri11.ADV1, 7 марта 2021 года в 12:01            →
        
        
            Логи catalina.out в TomCat 9 в формате JSON
            1
 DevOps as a Service from Palark
DevOps as a Service from Palark
	24/7 SRE & DevOps service to cover all your Kubernetes needs.


 
							
Определяет количество чего-то в окрестностях точки.
$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»).