#!/usr/bin/perl # RDW 2 # 18.07.2004 # author: pq # usage: skript.pl 1 2 3 4 ... package main; use strict; use warnings; my @a = @ARGV; my @res = p(@a); print "Die Potenzmenge von (@a):\n"; for (sort { @$a <=> @$b } @res) { print "(@$_)\n"; } sub p { my @m = @_; unless (@m) { # die Potenzmenge der leeren Menge ist die leere Menge return []; } else { my $el = shift @m; # um die Potenzmenge einer Menge M herauszufinden, # nimmt man sich ein Element e und bildet die Potenzmenge PR # der Restmenge R # jede Untermenge U in PR verdoppelt man und fügt # dem Duplikat das Element e hinzu my @p = map {([@$_, $el], $_)} p(@m); return @p; } }