Чтение онлайн

на главную

Жанры

Искусство программирования на языке сценариев командной оболочки

Купер Мендель

Шрифт:

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".

Поделиться:
Популярные книги

Муж на сдачу

Зика Натаэль
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Муж на сдачу

Системный Нуб

Тактарин Ринат
1. Ловец душ
Фантастика:
боевая фантастика
рпг
5.00
рейтинг книги
Системный Нуб

Око василиска

Кас Маркус
2. Артефактор
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Око василиска

Царь Федор. Трилогия

Злотников Роман Валерьевич
Царь Федор
Фантастика:
альтернативная история
8.68
рейтинг книги
Царь Федор. Трилогия

Идеальный мир для Лекаря 5

Сапфир Олег
5. Лекарь
Фантастика:
фэнтези
юмористическая фантастика
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 5

Я граф. Книга XII

Дрейк Сириус
12. Дорогой барон!
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Я граф. Книга XII

В теле пацана 6

Павлов Игорь Васильевич
6. Великое плато Вита
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
В теле пацана 6

Идеальный мир для Лекаря 4

Сапфир Олег
4. Лекарь
Фантастика:
фэнтези
юмористическая фантастика
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 4

Ты предал нашу семью

Рей Полина
2. Предатели
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Ты предал нашу семью

Огненный князь 6

Машуков Тимур
6. Багряный восход
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Огненный князь 6

Маверик

Астахов Евгений Евгеньевич
4. Сопряжение
Фантастика:
боевая фантастика
постапокалипсис
рпг
5.00
рейтинг книги
Маверик

Рядовой. Назад в СССР. Книга 1

Гаусс Максим
1. Второй шанс
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Рядовой. Назад в СССР. Книга 1

Имперец. Том 1 и Том 2

Романов Михаил Яковлевич
1. Имперец
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Имперец. Том 1 и Том 2

В ожидании осени 1977

Арх Максим
2. Регрессор в СССР
Фантастика:
альтернативная история
7.00
рейтинг книги
В ожидании осени 1977