aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStephen Lynn <bizlsg@localhost.localdomain>2024-02-26 07:25:11 +0800
committerStephen Lynn <bizlsg@localhost.localdomain>2024-02-26 07:25:11 +0800
commit431f6b3267d83f16055848c2d45cbddb3509bfd3 (patch)
tree269d77744473cd7e008aa1cdbac33c92a9717abf
parent971ad418c9418efd9eb105cd114387f5ce59d6be (diff)
downloadperlweeklychallenge-club-431f6b3267d83f16055848c2d45cbddb3509bfd3.tar.gz
perlweeklychallenge-club-431f6b3267d83f16055848c2d45cbddb3509bfd3.tar.bz2
perlweeklychallenge-club-431f6b3267d83f16055848c2d45cbddb3509bfd3.zip
ch-1 only no blog
-rw-r--r--challenge-257/steve-g-lynn/perl/ch-1.pl27
-rw-r--r--challenge-257/steve-g-lynn/python/ch-1.py22
2 files changed, 49 insertions, 0 deletions
diff --git a/challenge-257/steve-g-lynn/perl/ch-1.pl b/challenge-257/steve-g-lynn/perl/ch-1.pl
new file mode 100644
index 0000000000..d8fe44828c
--- /dev/null
+++ b/challenge-257/steve-g-lynn/perl/ch-1.pl
@@ -0,0 +1,27 @@
+# Perl 4.019 on DOSBOX
+
+sub smaller_than_current {
+ local(@ints)=@_;
+ local(@ranks)=(sort {$ints[$a]<=>$ints[$b];} 0..$#ints);
+ local($i,@retval);
+
+ $retval[$ranks[0]]=0;
+ foreach $i (1 .. $#ranks){
+ if ($ints[$ranks[$i]]==$ints[$ranks[$i-1]]) {
+ $retval[$ranks[$i]]=$retval[$ranks[$i-1]];
+ }
+ else {
+ $retval[$ranks[$i]]=$i;
+ }
+ }
+ @retval;
+}
+
+sub arr_print {
+ print "@_\n";
+}
+
+&arr_print( &smaller_than_current(5,2,1,6) ); # 2 1 0 3
+&arr_print( &smaller_than_current(1,2,0,3) ); # 1 2 0 3
+&arr_print( &smaller_than_current(0,1) ); # 0 1
+&arr_print( &smaller_than_current(9,4,9,2) ); # 2 1 2 0
diff --git a/challenge-257/steve-g-lynn/python/ch-1.py b/challenge-257/steve-g-lynn/python/ch-1.py
new file mode 100644
index 0000000000..49d2196a1f
--- /dev/null
+++ b/challenge-257/steve-g-lynn/python/ch-1.py
@@ -0,0 +1,22 @@
+# Python 1.4 beta on DOSBOX
+
+def smaller_than_current( intuple ):
+ ranks=[]
+ for i in range(len(intuple)):
+ ranks.append((intuple[i],i))
+ ranks.sort()
+ ranks=map(lambda x:x[1], ranks)
+ retval=[None]*len(intuple)
+ retval[ranks[0]]=0
+ for i in range(1,len(ranks)):
+ if intuple[ranks[i]]==intuple[ranks[i-1]]:
+ retval[ranks[i]]=retval[ranks[i-1]]
+ else:
+ retval[ranks[i]]=i
+ return retval
+
+
+print smaller_than_current( (5,2,1,6) ) # (2,1,0,3)
+print smaller_than_current( (1,2,0,3) ) # (1,2,0,3)
+print smaller_than_current( (0,1) ) # (0,1)
+print smaller_than_current( (9,4,9,2) ) # (2,1,2,0)