Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π˜ΡΠΊΡƒΡΡΡ‚Π²ΠΎ программирования Π½Π° языкС сцСнариСв ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 82

Автор МСндСль ΠšΡƒΠΏΠ΅Ρ€

#

# Π­Ρ‚ΠΎΡ‚ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ Π½Π° основС

#+ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° "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" # НомСр послСднСй ячСйки Π½Π° ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΌ ΠΏΠΎΠ»Π΅.