#
# ΠΡΠΎΡ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ Π²ΠΊΠ»ΡΡΠ΅Π½ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅
#+ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° "LICENSE" ΠΈΠ· ΠΏΠ°ΠΊΠ΅ΡΠ° "Crack"
#+ Ρ ΠΊΠΎΡΠΎΡΡΠΌ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ΅ΡΡΡ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΡΠΉ ΡΡΠ΅Π½Π°ΡΠΈΠΉ.
# ΠΡΠΎΡ ΡΠΊΡΠΈΠΏΡ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠ΅ ΡΠ°ΠΉΠ»Ρ ΠΈ ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ
#+ ΡΠ»ΠΎΠ², Π½Π°ΠΉΠ΄Π΅Π½Π½ΡΡ Π² ΡΡΠΈΡ ΡΠ°ΠΉΠ»Π°Ρ .
# ΠΠ½ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠΊΠ°Π·Π°ΡΡΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΌ Π΄Π»Ρ ΡΠ±ΠΎΡΠΊΠΈ ΡΠ»ΠΎΠ²Π°ΡΠ΅ΠΉ
#+ ΠΈ ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ Π»Π΅ΠΊΡΠΈΠΊΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°.
E_BADARGS=65
if [ ! -r "$1" ] # ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ Ρ ΠΎΡΡ Π±Ρ ΠΎΠ΄ΠΈΠ½ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ --
then #+ ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π°.
echo "ΠΠΎΡΡΠ΄ΠΎΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ: $0 ΠΈΠΌΠ΅Π½Π°_ΡΠ°ΠΉΠ»ΠΎΠ²"
exit $E_BADARGS
fi
# SORT="sort" # ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ Π·Π°Π΄Π°Π½ΠΈΡ ΠΊΠ»ΡΡΠ΅ΠΉ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ ΠΎΡΠΏΠ°Π»Π°.
#+ ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΎ, ΠΏΠΎ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ ΠΊ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΠΎΠΌΡ ΡΡΠ΅Π½Π°ΡΠΈΡ.
cat $* | # ΠΡΠ΄Π°ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ² Π½Π° stdout.
tr A-Z a-z | # ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ Π² Π½ΠΈΠΆΠ½ΠΈΠΉ ΡΠ΅Π³ΠΈΡΡΡ.
tr ' ' '\012' | # ΠΠΎΠ²ΠΎΠ΅: Π·Π°ΠΌΠ΅Π½ΠΈΡΡ ΠΏΡΠΎΠ±Π΅Π»Ρ ΡΠΈΠΌΠ²ΠΎΠ»Π°ΠΌΠΈ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π° ΡΡΡΠΎΠΊΠΈ.
# tr -cd '\012[a-z][0-9]' | # Π ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΠΎΠΌ ΡΡΠ΅Π½Π°ΡΠΈΠΈ: ΡΠ΄Π°Π»ΠΈΡΡ Π²ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ,
#+ ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΡΠ²Π»ΡΡΡΡΡ Π±ΡΠΊΠ²Π°ΠΌΠΈ ΠΈΠ»ΠΈ ΡΠΈΡΡΠ°ΠΌΠΈ.
tr -c '\012a-z' '\012' | # ΠΠΌΠ΅ΡΡΠΎ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ
#+ Π½Π΅Π°Π»ΡΠ°Π²ΠΈΡΠ½ΠΎ-ΡΠΈΡΡΠΎΠ²ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ Π·Π°ΠΌΠ΅Π½ΡΡΡΡΡ Π½Π° ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ ΡΡΡΠΎΠΊΠΈ.
sort |
uniq | # Π£Π΄Π°Π»ΠΈΡΡ ΠΏΠΎΠ²ΡΠΎΡΡΡΡΠΈΠ΅ΡΡ ΡΠ»ΠΎΠ²Π°.
grep -v '^#' | # Π£Π΄Π°Π»ΠΈΡΡ ΡΡΡΠΎΠΊΠΈ, Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΠ΅ΡΡ Ρ "#".
grep -v '^$' # Π£Π΄Π°Π»ΠΈΡΡ ΠΏΡΡΡΡΠ΅ ΡΡΡΠΎΠΊΠΈ.
exit 0
ΠΡΠΈΠΌΠ΅Ρ A-10. Π Π°ΡΡΠ΅Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠ° "ΡΠΎΠ·Π²ΡΡΠ½ΠΎΡΡΠΈ"
#!/bin/bash
# soundex.sh: Π Π°ΡΡΠ΅Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠ° "ΡΠΎΠ·Π²ΡΡΠ½ΠΎΡΡΠΈ"
# =======================================================
# Π‘ΡΠ΅Π½Π°ΡΠΈΠΉ Soundex
# ΠΠ²ΡΠΎΡ
# Mendel Cooper
# [email protected]
# 23 Π―Π½Π²Π°ΡΡ 2002 Π³.
#
# Π£ΡΠ»ΠΎΠ²ΠΈΡ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΈΡ: Public Domain.
#
# ΠΠ΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΎΡΠ»ΠΈΡΠ°ΡΡΠ°ΡΡΡ Π²Π΅ΡΡΠΈΡ ΡΡΠΎΠ³ΠΎ ΡΡΠ΅Π½Π°ΡΠΈΡ Π±ΡΠ»Π° ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π°
#+ ΠΠ΄ΠΎΠΌ Π¨ΡΡΠ΅ΡΠΎΠΌ (Ed Schaefer) Π² ΠΡΠ»Π΅ 2002 Π³ΠΎΠ΄Π° Π² ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ΅ "Shell Corner"
#+ "Unix Review" on-line,
#+ http://www.unixreview.com/documents/uni1026336632258/
# =======================================================
ARGCOUNT=1 # Π’ΡΠ΅Π±ΡΠ΅ΡΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ.
E_WRONGARGS=70
if [ $# -ne "$ARGCOUNT" ]
then
echo "ΠΠΎΡΡΠ΄ΠΎΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ: `basename $0` ΠΈΠΌΡ"
exit $E_WRONGARGS
fi
assign_value () # ΠΡΠΈΡΠ²ΠΎΠΈΡΡ ΡΠΈΡΠ»ΠΎΠ²ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ
{ #+ ΡΠΈΠΌΠ²ΠΎΠ»Π°ΠΌ Π² ΠΈΠΌΠ΅Π½ΠΈ.
val1=bfpv # 'b,f,p,v' = 1
val2=cgjkqsxz # 'c,g,j,k,q,s,x,z' = 2
val3=dt # ΠΈ Ρ.ΠΏ.
val4=l
val5=mn
val6=r
# ΠΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π·Π΄Π΅ΡΡ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ.
value=$( echo "$1" \
| tr -d wh \
| tr $val1 1 | tr $val2 2 | tr $val3 3 \
| tr $val4 4 | tr $val5 5 | tr $val6 6 \
| tr -s 123456 \
| tr -d aeiouy )
# Π‘ΠΈΠΌΠ²ΠΎΠ»Π°ΠΌ Π² ΠΈΠΌΠ΅Π½ΠΈ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°ΡΡΡΡ ΡΠΈΡΠ»ΠΎΠ²ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ.
# Π£Π΄Π°Π»ΡΡΡΡΡ ΠΏΠΎΠ²ΡΠΎΡΡΡΡΠΈΠ΅ΡΡ ΡΠΈΡΠ»Π°, Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ Π½Π΅ ΡΠ°Π·Π΄Π΅Π»Π΅Π½Ρ Π³Π»Π°ΡΠ½ΡΠΌΠΈ.
# ΠΠ»Π°ΡΠ½ΡΠ΅ ΠΈΠ³Π½ΠΎΡΠΈΡΡΡΡΡΡ, Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ Π½Π΅ ΡΠ²Π»ΡΡΡΡΡ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»ΡΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ΄Π°Π»ΡΡΡΡΡ Π² ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ.
# Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ 'w' ΠΈ 'h' ΡΠ΄Π°Π»ΡΡΡΡΡ Π² ΠΏΠ΅ΡΠ²ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ.
}
input_name="$1"
echo
echo "ΠΠΌΡ = $input_name"
# ΠΠ΅ΡΠ΅Π²Π΅ΡΡΠΈ Π²ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ Π² ΠΈΠΌΠ΅Π½ΠΈ Π² Π½ΠΈΠΆΠ½ΠΈΠΉ ΡΠ΅Π³ΠΈΡΡΡ.
# ------------------------------------------------
name=$( echo $input_name | tr A-Z a-z )
# ------------------------------------------------
# ΠΠ°ΡΠ°Π»ΡΠ½ΡΠΉ ΡΠΈΠΌΠ²ΠΎΠ» Π² ΠΈΠ½Π΄Π΅ΠΊΡΠ° "ΡΠΎΠ·Π²ΡΡΠΈΡ": ΠΏΠ΅ΡΠ²Π°Ρ Π±ΡΠΊΠ²Π° Π² ΠΈΠΌΠ΅Π½ΠΈ.
# --------------------------------------------
char_pos=0 # ΠΠ°ΡΠ°Π»ΡΠ½Π°Ρ ΠΏΠΎΠ·ΠΈΡΠΈΡ Π² ΠΈΠΌΠ΅Π½ΠΈ.
prefix0=${name:$char_pos:1}
prefix=`echo $prefix0 | tr a-z A-Z`
# ΠΠ΅ΡΠ²ΡΡ Π±ΡΠΊΠ²Ρ Π² ΠΈΠΌΠ΅Π½ΠΈ -- Π² Π²Π΅ΡΡ Π½ΠΈΠΉ ΡΠ΅Π³ΠΈΡΡΡ.
let "char_pos += 1" # ΠΠ΅ΡΠ΅Π΄Π²ΠΈΠ½ΡΡΡ "ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ" Π½Π° ΠΎΠ΄ΠΈΠ½ ΡΠΈΠΌΠ²ΠΎΠ».
name1=${name:$char_pos}
# ++++++++++++++++++++++++++++ ΠΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΡΠΈΡΡΠ°ΡΠΈΠΉ +++++++++++++++++++++++++++++++
# Π’Π΅ΠΏΠ΅ΡΡ ΠΌΡ ΠΏΠ΅ΡΠ΅Π΄Π²ΠΈΠ½ΡΠ»ΠΈΡΡ Π½Π° ΠΎΠ΄ΠΈΠ½ ΡΠΈΠΌΠ²ΠΎΠ» Π²ΠΏΡΠ°Π²ΠΎ.
# ΠΡΠ»ΠΈ Π²ΡΠΎΡΠΎΠΉ ΡΠΈΠΌΠ²ΠΎΠ» Π² ΠΈΠΌΠ΅Π½ΠΈ ΡΠΎΠ²ΠΏΠ°Π΄Π°Π΅Ρ Ρ ΠΏΠ΅ΡΠ²ΡΠΌ
#+ ΡΠΎ Π΅Π³ΠΎ Π½ΡΠΆΠ½ΠΎ ΠΎΡΠ±ΡΠΎΡΠΈΡΡ.
# ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ -- Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΈ ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠΈΠΌΠ²ΠΎΠ»
#+ Π³Π»Π°ΡΠ½ΠΎΠΉ, 'w' ΠΈΠ»ΠΈ 'h'.
char1=`echo $prefix | tr A-Z a-z` # ΠΠ΅ΡΠ²ΡΠΉ ΡΠΈΠΌΠ²ΠΎΠ» -- Π² Π½ΠΈΠΆΠ½ΠΈΠΉ ΡΠ΅Π³ΠΈΡΡΡ.
assign_value $name
s1=$value
assign_value $name1
s2=$value
assign_value $char1
s3=$value
s3=9$s3 # ΠΡΠ»ΠΈ ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠΈΠΌΠ²ΠΎΠ» Π² ΠΈΠΌΠ΅Π½ΠΈ -- Π³Π»Π°ΡΠ½Π°Ρ Π±ΡΠΊΠ²Π°
#+ ΠΈΠ»ΠΈ 'w' ΠΈΠ»ΠΈ 'h',
#+ ΡΠΎ Π΅Π΅ "Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅" Π½ΡΠΆΠ½ΠΎ ΠΎΡΠ±ΡΠΎΡΠΈΡΡ.
#+ ΠΠΎΡΡΠΎΠΌΡ ΡΡΠ°Π²ΠΈΠΌ 9, ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΎΠ΅
#+ Π½Π΅ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ.
if [[ "$s1" -ne "$s2" || "$s3" -eq 9 ]]
then
suffix=$s2
else
suffix=${s2:$char_pos}
fi
# ++++++++++++++++++++++++ ΠΠΎΠ½Π΅Ρ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΡΠΈΡΡΠ°ΡΠΈΠΉ +++++++++++++++++++++++++++++++
padding=000 # ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΡ ΡΡΠ΅ΠΌΡ Π½ΡΠ»ΡΠΌΠΈ.
soun=$prefix$suffix$padding # ΠΡΠ»ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π² ΠΊΠΎΠ½Π΅Ρ ΠΏΠΎΠ»ΡΡΠΈΠ²ΡΠ΅Π³ΠΎΡΡ ΠΈΠ½Π΄Π΅ΠΊΡΠ°.
MAXLEN=4 # ΠΠ³ΡΠ°Π½ΠΈΡΠΈΡΡ Π΄Π»ΠΈΠ½Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠ° 4-ΠΌΡ ΡΠΈΠΌΠ²ΠΎΠ»Π°ΠΌΠΈ.
soundex=${soun:0:$MAXLEN}
echo "ΠΠ½Π΄Π΅ΠΊΡ ΡΠΎΠ·Π²ΡΡΠΈΡ = $soundex"
echo
# ΠΠ½Π΄Π΅ΠΊΡ "ΡΠΎΠ·Π²ΡΡΠΈΡ" - ΡΡΠΎ ΠΌΠ΅ΡΠΎΠ΄ ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΡΠΈΠΈ ΠΈ ΠΊΠ»Π°ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΈΠΌΠ΅Π½
#+ ΠΏΠΎ ΠΏΠΎΠ΄ΠΎΠ±ΠΈΡ Π·Π²ΡΡΠ°Π½ΠΈΡ.
# ΠΠ½Π΄Π΅ΠΊΡ "ΡΠΎΠ·Π²ΡΡΠΈΡ" Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»Π° Π² ΠΈΠΌΠ΅Π½ΠΈ,
#+ Π·Π° ΠΊΠΎΡΠΎΡΡΠΌ ΡΠ»Π΅Π΄ΡΡΡ 3-Π·Π½Π°ΡΠ½ΡΠΉ ΡΠ°ΡΡΠ΅ΡΠ½ΡΠΉ ΠΊΠΎΠ΄.
# ΠΠΌΠ΅Π½Π°, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΎΠΈΠ·Π½ΠΎΡΡΡΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ, ΠΈΠΌΠ΅ΡΡ Π±Π»ΠΈΠ·ΠΊΠΈΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΡ "ΡΠΎΠ·Π²ΡΡΠΈΡ".
# ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
# Smith ΠΈ Smythe -- ΠΎΠ±Π° ΠΈΠΌΠ΅ΡΡ ΠΈΠ½Π΄Π΅ΠΊΡ "ΡΠΎΠ·Π²ΡΡΠΈΡ" "S530".
# Harrison = H625
# Hargison = H622
# Harriman = H655
# ΠΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ ΡΡΠ° ΠΌΠ΅ΡΠΎΠ΄ΠΈΠΊΠ° Π΄Π°Π΅Ρ Π½Π΅ΠΏΠ»ΠΎΡ ΠΎΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ, Π½ΠΎ ΠΈΠΌΠ΅ΡΡΡΡ ΠΈ Π°Π½ΠΎΠΌΠ°Π»ΠΈΠΈ.
#
#
# ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π²Ρ Π½Π°ΠΉΠ΄Π΅ΡΠ΅ Π½Π°
#+ "National Archives and Records Administration home page",
#+ http://www.nara.gov/genealogy/soundex/soundex.html
# Π£ΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΠ΅:
# ----------
# Π£ΠΏΡΠΎΡΡΠΈΡΠ΅ Π±Π»ΠΎΠΊ "ΠΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΡΠΈΡΡΠ°ΡΠΈΠΉ" .
exit 0
ΠΡΠΈΠΌΠ΅Ρ A-11. "ΠΠ³ΡΠ° "ΠΠΈΠ·Π½Ρ""
#!/bin/bash
# life.sh: ΠΠ³ΡΠ° "ΠΠΈΠ·Π½Ρ"
# ##################################################################### #
# ΠΡΠΎ Bash-Π²Π΅ΡΡΠΈΡ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎΠΉ ΠΈΠ³ΡΡ ΠΠΆΠΎΠ½Π° ΠΠΎΠ½Π²Π΅Ρ (John Conway) "ΠΠΈΠ·Π½Ρ". #
# --------------------------------------------------------------------- #
# ΠΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΎΠ΅ ΠΈΠ³ΡΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ»Π΅ ΡΠ°Π·Π±ΠΈΡΠΎ Π½Π° ΡΡΠ΅ΠΉΠΊΠΈ, Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΠ΅ΠΉΠΊΠ΅ ΠΌΠΎΠΆΠ΅Ρ #
#+ ΡΠ°ΡΠΏΠΎΠ»Π°Π³Π°ΡΡΡΡ ΠΆΠΈΠ²Π°Ρ ΠΎΡΠΎΠ±Ρ. #
# Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, ΡΡΠ΅ΠΉΠΊΠ° Ρ ΠΆΠΈΠ²ΠΎΠΉ ΠΎΡΠΎΠ±ΡΡ ΠΎΡΠΌΠ΅ΡΠ°Π΅ΡΡΡ ΡΠΎΡΠΊΠΎΠΉ, #
#+ Π½Π΅ Π·Π°Π½ΡΡΠ°Ρ ΡΡΠ΅ΠΉΠΊΠ° -- ΠΎΡΡΠ°Π΅ΡΡΡ ΠΏΡΡΡΠΎΠΉ. #
# ΠΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ, ΡΡΠ΅ΠΉΠΊΠΈ Π·Π°ΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΈΠ· ΡΠ°ΠΉΠ»Π° -- #
#+ ΡΡΠΎ ΠΏΠ΅ΡΠ²ΠΎΠ΅ ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΠ΅, ΠΈΠ»ΠΈ "ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΠ΅ 0" #
# ΠΠΎΡΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΎΡΠΎΠ±Π΅ΠΉ, Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΠΈ, #
#+ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌΠΈ #
# 1) ΠΠ°ΠΆΠ΄Π°Ρ ΡΡΠ΅ΠΉΠΊΠ° ΠΈΠΌΠ΅Π΅Ρ "ΡΠΎΡΠ΅Π΄Π΅ΠΉ" #
#+ ΡΠ»Π΅Π²Π°, ΡΠΏΡΠ°Π²Π°, ΡΠ²Π΅ΡΡ Ρ, ΡΠ½ΠΈΠ·Ρ ΠΈ 4 ΠΏΠΎ Π΄ΠΈΠ°Π³ΠΎΠ½Π°Π»ΡΠΌ. #
# 123 #
# 4*5 #
# 678 #
# #
# 2) ΠΡΠ»ΠΈ ΠΆΠΈΠ²Π°Ρ ΠΎΡΠΎΠ±Ρ ΠΈΠΌΠ΅Π΅Ρ 2 ΠΈΠ»ΠΈ 3 ΠΆΠΈΠ²ΡΡ ΡΠΎΡΠ΅Π΄Π΅ΠΉ, ΡΠΎ ΠΎΠ½Π° ΠΎΡΡΠ°Π΅ΡΡΡ ΠΆΠΈΡΡ.#
# 3) ΠΡΠ»ΠΈ ΠΏΡΡΡΠ°Ρ ΡΡΠ΅ΠΉΠΊΠ° ΠΈΠΌΠ΅Π΅Ρ 3 ΠΆΠΈΠ²ΡΡ ΡΠΎΡΠ΅Π΄Π΅ΠΉ -- #
#+ Π² Π½Π΅ΠΉ "ΡΠΎΠΆΠ΄Π°Π΅ΡΡΡ" Π½ΠΎΠ²Π°Ρ ΠΎΡΠΎΠ±Ρ #
SURVIVE=2 #
BIRTH=3 #
# 4) Π Π»ΡΠ±ΠΎΠΌ Π΄ΡΡΠ³ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, ΠΆΠΈΠ²Π°Ρ ΠΎΡΠΎΠ±Ρ "ΠΏΠΎΠ³ΠΈΠ±Π°Π΅Ρ" #
# ##################################################################### #
startfile=gen0 # ΠΠ°ΡΠ°Π»ΡΠ½ΠΎΠ΅ ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΠ΅ ΠΈΠ· ΡΠ°ΠΉΠ»Π° ΠΏΠΎ-ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ -- "gen0".
# Π΅ΡΠ»ΠΈ Π½Π΅ Π·Π°Π΄Π°Π½ Π΄ΡΡΠ³ΠΎΠΉ ΡΠ°ΠΉΠ», ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ.
#
if [ -n "$1" ] # ΠΡΠΎΠ²Π΅ΡΠΈΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ -- ΡΠ°ΠΉΠ» Ρ "ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΠ΅ΠΌn 0".
then
if [ -e "$1" ] # ΠΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π°Π»ΠΈΡΠΈΡ ΡΠ°ΠΉΠ»Π°.
then
startfile="$1"
fi
fi
ALIVE1=.
DEAD1=_
# ΠΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ "ΠΆΠΈΠ²ΡΡ " ΠΎΡΠΎΠ±Π΅ΠΉ ΠΈ ΠΏΡΡΡΡΡ ΡΡΠ΅Π΅ΠΊ Π² ΡΠ°ΠΉΠ»Π΅ Ρ "ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΠ΅ΠΌ 0".
# ΠΡΠΎΡ ΡΡΠ΅Π½Π°ΡΠΈΠΉ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ ΠΈΠ³ΡΠΎΠ²ΡΠΌ ΠΏΠΎΠ»Π΅ΠΌ 10 x 10 grid (ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΎ,
#+ Π½ΠΎ Π±ΠΎΠ»ΡΡΠΎΠ΅ ΠΈΠ³ΡΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ»Π΅ Π±ΡΠ΄Π΅Ρ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΡΡ ΠΎΡΠ΅Π½Ρ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ).
ROWS=10
COLS=10
GENERATIONS=10 # ΠΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΠΉ.
NONE_ALIVE=80 # ΠΠΎΠ΄ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ Π½Π° ΡΠ»ΡΡΠ°ΠΉ,
#+ Π΅ΡΠ»ΠΈ Π½Π΅ ΠΎΡΡΠ°Π»ΠΎΡΡ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠΉ "ΠΆΠΈΠ²ΠΎΠΉ" ΠΎΡΠΎΠ±ΠΈ.
TRUE=0
FALSE=1
ALIVE=0
DEAD=1
avar= # Π’Π΅ΠΊΡΡΠ΅Π΅ ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΠ΅.
generation=0 # ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΡΠ΅ΡΡΠΈΠΊΠ° ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΠΉ.
# =================================================================
let "cells = $ROWS * $COLS"
# ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΡΠ΅Π΅ΠΊ Π½Π° ΠΈΠ³ΡΠΎΠ²ΠΎΠΌ ΠΏΠΎΠ»Π΅.
declare -a initial # ΠΠ°ΡΡΠΈΠ²Ρ ΡΡΠ΅Π΅ΠΊ.
declare -a current
display ()
{
alive=0 # ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ "ΠΆΠΈΠ²ΡΡ " ΠΎΡΠΎΠ±Π΅ΠΉ.
# ΠΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ -- Π½ΠΎΠ»Ρ.
declare -a arr
arr=( `echo "$1"` ) # ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ Π² ΠΌΠ°ΡΡΠΈΠ².
element_count=${#arr[*]}
local i
local rowcheck
for ((i=0; i<$element_count; i++))
do
# Π‘ΠΈΠΌΠ²ΠΎΠ» ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π° ΡΡΡΠΎΠΊΠΈ -- Π² ΠΊΠΎΠ½Π΅Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ.
let "rowcheck = $i % ROWS"
if [ "$rowcheck" -eq 0 ]
then
echo # ΠΠ΅ΡΠ΅Π²ΠΎΠ΄ ΡΡΡΠΎΠΊΠΈ.
echo -n " " # ΠΡΡΠ°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅.
fi
cell=${arr[i]}
if [ "$cell" = . ]
then
let "alive += 1"
fi
echo -n "$cell" | sed -e 's/_/ /g'
# ΠΡΠ²Π΅ΡΡΠΈ ΠΌΠ°ΡΡΠΈΠ², ΠΏΠΎ ΠΏΡΡΠΈ Π·Π°ΠΌΠ΅Π½ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠΈΠ²Π°Π½ΠΈΡ Π½Π° ΠΏΡΠΎΠ±Π΅Π»Ρ.
done
return
}
IsValid () # ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΡΡΠΈ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ ΡΡΠ΅ΠΉΠΊΠΈ.
{
if [ -z "$1" -o -z "$2" ] # ΠΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π°Π»ΠΈΡΠΈΡ Π²Ρ ΠΎΠ΄Π½ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ².
then
return $FALSE
fi
local row
local lower_limit=0 # ΠΠ°ΠΏΡΠ΅Ρ Π½Π° ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ.
local upper_limit
local left
local right
let "upper_limit = $ROWS * $COLS - 1" # ΠΠΎΠΌΠ΅Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ ΡΡΠ΅ΠΉΠΊΠΈ Π½Π° ΠΈΠ³ΡΠΎΠ²ΠΎΠΌ ΠΏΠΎΠ»Π΅.