host info updates
[distro-setup] / easiest-to-type-numbers
1 #!/bin/bash
2 # I, Ian Kelling, follow the GNU license recommendations at
3 # https://www.gnu.org/licenses/license-recommendations.en.html. They
4 # recommend that small programs, < 300 lines, be licensed under the
5 # Apache License 2.0. This file contains or is part of one or more small
6 # programs. If a small program grows beyond 300 lines, I plan to switch
7 # its license to GPL.
8
9 # Copyright 2024 Ian Kelling
10
11 # Licensed under the Apache License, Version 2.0 (the "License");
12 # you may not use this file except in compliance with the License.
13 # You may obtain a copy of the License at
14
15 # http://www.apache.org/licenses/LICENSE-2.0
16
17 # Unless required by applicable law or agreed to in writing, software
18 # distributed under the License is distributed on an "AS IS" BASIS,
19 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
20 # See the License for the specific language governing permissions and
21 # limitations under the License.
22
23 source /a/bin/bash-bear-trap/bash-bear
24
25 e () {
26 printf "%s\n" "$*"
27 }
28
29
30 prefix=$1
31 suffix=$2
32
33 # print number
34 pn() {
35 for n; do
36 e $prefix$n$suffix
37 done
38 }
39
40 # level 1 numbers
41 l1=(2 3 8 9)
42
43 # level 2 numbers
44 l2=(4 7)
45
46 l12=( ${l1[@]} ${l2[@]} )
47
48 t1() {
49
50 pn ${l1[@]}
51 }
52
53 t2() {
54
55 pn ${l2[@]}
56 }
57
58 declare -A used
59 t3() {
60 for d1 in ${l1[@]}; do
61 for d2 in ${l1[@]}; do
62 if (( d1 == d2 )); then continue; fi
63 pn $d1$d2
64 used[$d1$d2]=t
65 done
66 done
67 }
68
69 t4() {
70 for d1 in ${l12[@]}; do
71 for d2 in ${l12[@]}; do
72 if (( d1 == d2 )); then continue; fi
73 if [[ ${used[$d1$d2]} ]]; then continue; fi
74 pn $d1$d2
75 used[$d1$d2]=t
76 done
77 done
78 }
79
80 for t in {1..4}; do
81 e tier $t
82 t$t
83 done