Perl 및 Elm의 Perl Weekly Challenge 109
이번 주에 저는 Perl에서 처음으로 Perl Weekly Challenge의 "Chowla Numbers"작업을 해결했습니다. 그런 다음 느릅 나무에서.
둘 다 내가 할 수 있는 한 TDD-ish로 했고, Perl 버전에서 Data::Dumper를 STDOUT으로 하는 일부 속임수를 사용했습니다. Elm의 경우 언어에 익숙하지 않기 때문에 테스트를 조금 더 사용했고 솔직히 말해서 화면에 덤프하는 쉬운 방법을 몰랐습니다. ;-)
Elm 버전은 다음과 같이 끝났습니다.
module Chowla exposing (chowla, n, nums)
import List
nums : Int -> List Int
nums max =
List.range 1 max
|> List.map n
n : Int -> Int
n num =
let
denominators =
List.range 2 (num - 1)
numbers =
List.map (chowla num) denominators
in
List.foldl (+) 0 numbers
chowla : Int -> Int -> Int
chowla num denom =
case remainderBy denom num of
0 ->
denom
_ ->
0
펄은 다음과 같습니다.
package Chowla;
use Moo;
sub list {
my ($self,$max) = @_;
my @chowla_numbers;
for my $n (1..$max) {
push @chowla_numbers, $self->n($n);
}
return \@chowla_numbers;
}
sub n {
my ($self,$num) = @_;
my $total = 0;
for my $n (2..$num-1) {
if ($num % $n == 0) {
$total += $n;
}
}
return $total;
}
1;
둘 다 특별히 길지 않습니다. 유형 서명이 없는 Elm은 15줄입니다. Perl 21 라인(다르게 형식을 지정해도 거의 동일함).
for
루프가 없는 Elm 코드는 map
및 fold
(특히 foldl
)에 의존합니다. 지도와 함께 Perl을 시도할 수/해야 합니다. Perl에는 foldl에 해당하는 것이 없습니다. foldl
는 기본적으로 지도와 같은 흥미로운 명령에 있지만 함수를 통해 자체적으로 축소됩니다. 제 경우에는 +
모든 숫자를 합산합니다.Perl에서 코드를 테스트하는 것은 그 어느 때보다 쉬웠으며 Perl의 Test2:V0은 훌륭한 도구입니다. 느릅나무 쪽에서는 테스트에 점점 익숙해지고 있습니다. 여기에 내장된 퍼징을 사용하지 않았습니다. 더 탐색해야 합니다.
다음 주에는 https:://fantasy-judo.com에 대해 작업하고 싶은 Go 코드가 더 있고 내 https://www.vwjl.net/을 조금 더 현대화하는 작업을 하고 싶습니다. 전투 시뮬레이션 코드는 주의를 기울여야 하는 부분입니다. 이를 감안할 때 이번 주에 주간 챌린지를 라이브 스트리밍하지 않을 수 있지만 일반적인 해킹을 스트리밍할 수 있습니다.
태그: perl elm perlweeklychallenge
Reference
이 문제에 관하여(Perl 및 Elm의 Perl Weekly Challenge 109), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/lancew/perl-weekly-challenge-109-in-perl-and-elm-522o텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)