마음이 심난해서 심심풀이로 간단하게 풀만한 프로그래밍 문제가 없을까 검색하다 함수형 언어 포럼에 있는 프로그래밍 문제 게시판을 발견했습니다. 맨 위에 있는 문제 하나를 골라 풀어보았습니다.

문제는 정수 $n$을 입력하면 짝수인 경우 2로 나누고, 홀수인 경우 $3n + 1$을 해줍니다. $n$이 1이 되면 종료하고 그 리스트를 보여주라는 문제입니다.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
#! /usr/bin/perl
use strict;
use warnings;
use integer;

my @l;
my $n;
chomp ($n = <STDIN>);
push @l, $n;

while ( $n != 1 ) {
    push @l, $n = ($n % 2) ? $n * 3 + 1 : $n / 2;
}
print "@l\n";