diff --git a/bash/default.nix b/bash/default.nix new file mode 100644 index 0000000..fc38787 --- /dev/null +++ b/bash/default.nix @@ -0,0 +1,22 @@ +{ stdenv +, lib +, bash +, makeWrapper +}: + +stdenv.mkDerivation { + pname = "soe-bash"; + version = "1.0"; + + src = ./.; + + buildInputs = [ bash ]; + nativeBuildInputs = [ makeWrapper ]; + + installPhase = '' + mkdir -p $out/bin + install -m555 soe-bash $out/bin + wrapProgram $out/bin/soe-bash \ + --prefix PATH : ${lib.makeBinPath [ bash ]} + ''; +} diff --git a/bash/soe-bash b/bash/soe-bash new file mode 100644 index 0000000..5f8c1c7 --- /dev/null +++ b/bash/soe-bash @@ -0,0 +1,19 @@ +#!/usr/bin/env bash + +read num +echo + +nums=() +for i in `seq 2 $num`; do + nums+=($i) +done + +while [ -n "$nums" ]; do + prime=${nums[0]} + echo $prime + nums_=() + for elem in "${nums[@]}"; do + [ $(( $elem % $prime )) -eq 0 ] || nums_+=($elem) + done + nums=(${nums_[@]}) +done diff --git a/fish/default.nix b/fish/default.nix new file mode 100644 index 0000000..3b14eb7 --- /dev/null +++ b/fish/default.nix @@ -0,0 +1,22 @@ +{ stdenv +, lib +, fish +, makeWrapper +}: + +stdenv.mkDerivation { + pname = "soe-fish"; + version = "1.0"; + + src = ./.; + + buildInputs = [ fish ]; + nativeBuildInputs = [ makeWrapper ]; + + installPhase = '' + mkdir -p $out/bin + install -m555 soe-fish $out/bin + wrapProgram $out/bin/soe-fish \ + --prefix PATH : ${lib.makeBinPath [ fish ]} + ''; +} diff --git a/fish/soe-fish b/fish/soe-fish new file mode 100644 index 0000000..899dc6f --- /dev/null +++ b/fish/soe-fish @@ -0,0 +1,17 @@ +#!/usr/bin/env fish + +read -P "" num +echo + +set nums (seq 2 $num) + +while test -n "$nums" + set prime $nums[1] + echo $prime + + set -e nums_ + for elem in $nums + test (math $elem % $prime) -eq 0 || set -a nums_ $elem + end + set nums $nums_ +end