Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > b611ea73723a8287cce23d3124a6eeea > files > 322

howto-sgml-ko-2006-5mdv2010.0.noarch.rpm

#!/bin/bash
# 2Â÷¿ø ¹è¿­À» ½Ã¹Ä·¹ÀÌÆ®.

# 2Â÷¿ø ¹è¿­Àº ¿­(row)À» ¿¬¼ÓÀûÀ¸·Î ÀúÀåÇؼ­ ±¸ÇöÇÕ´Ï´Ù.

Rows=5
Columns=5

declare -a alpha     # C ¿¡¼­ 
                     # char alpha[Rows][Columns];
					 # ÀÎ °Íó·³. ÇÏÁö¸¸ ºÒÇÊ¿äÇÑ ¼±¾ðÀÔ´Ï´Ù.

load_alpha ()
{
local rc=0
local index


for i in A B C D E F G H I J K L M N O P Q R S T U V W X Y
do
  local row=`expr $rc / $Columns`
  local column=`expr $rc % $Rows`
  let "index = $row * $Rows + $column"
  alpha[$index]=$i   # alpha[$row][$column]
  let "rc += 1"
done  

# declare -a alpha=( A B C D E F G H I J K L M N O P Q R S T U V W X Y )
# ¶ó°í ÇÏ´Â °Í°ú ºñ½ÁÇÏÁö¸¸ ÀÌ·¸°Ô Çϸé À¢Áö 2Â÷¿ø ¹è¿­°°Àº ´À³¦ÀÌ µéÁö ¾Ê½À´Ï´Ù.
}

print_alpha ()
{
local row=0
local index

echo

while [ "$row" -lt "$Rows" ]   # "¿­ ¿ì¼±"(row major) ¼ø¼­·Î Ãâ·Â
                               # ¿­(¹Ù±ù ·çÇÁ)Àº ±×´ë·Î°í ÇàÀÌ º¯ÇÔ.
do                            
  local column=0
  
  while [ "$column" -lt "$Columns" ]
  do
    let "index = $row * $Rows + $column"
    echo -n "${alpha[index]} "  # alpha[$row][$column]
    let "column += 1"
  done

  let "row += 1"
  echo

done  

# °£´ÜÇÏ°Ô ´ÙÀ½Ã³·³ ÇÒ ¼öµµ ÀÖ½À´Ï´Ù.
#   echo ${alpha[*]} | xargs -n $Columns

echo
}

filter ()     # ¹è¿­ÀÇ À½¼ö À妽º¸¦ °É·¯³¿.
{

echo -n "  "  # ±â¿ïÀÓ(tilt) Á¦°ø.

if [[ "$1" -ge 0 &&  "$1" -lt "$Rows" && "$2" -ge 0 && "$2" -lt "$Columns" ]]
then
    let "index = $1 * $Rows + $2"
    # ÀÌÁ¦, ȸÀü(rotate)½ÃÄÑ Ãâ·Â.
    echo -n " ${alpha[index]}"  # alpha[$row][$column]
fi    

}
  



rotate ()  # ¹è¿­ ¿ÞÂÊ ¾Æ·¡¸¦ ±âÁØÀ¸·Î 45µµ ȸÀü.
{
local row
local column

for (( row = Rows; row > -Rows; row-- ))  # ¹è¿­À» µÚ¿¡¼­ºÎÅÍ Çϳª¾¿ ó¸®.
do

  for (( column = 0; column < Columns; column++ ))
  do

    if [ "$row" -ge 0 ]
    then
      let "t1 = $column - $row"
      let "t2 = $column"
    else
      let "t1 = $column"
      let "t2 = $column + $row"
    fi  

    filter $t1 $t2   # ¹è¿­ÀÇ À½¼ö À妽º¸¦ °É·¯³¿.
  done

  echo; echo

done 

# ¹è¿­ ȸÀü(array rotation)Àº Herbert Mayer °¡ ¾´
# "Advanced C Programming on the IBM PC"¿¡ ³ª¿Â ¿¹Á¦(143-146 ÂÊ)¿¡¼­
# ¿µ°¨À» ¹Þ¾Æ ÀÛ¼ºÇß½À´Ï´Ù(¼­Áö»çÇ× Âü°í).

}


#-----------------------------------------------------#
load_alpha     # ¹è¿­À» Àаí,
print_alpha    # Ãâ·ÂÇÑ ´ÙÀ½,
rotate         # ¹Ý½Ã°è ¹æÇâÀ¸·Î 45µµ ȸÀü.
#-----------------------------------------------------#


# ÀÌ ½ºÅ©¸³Æ®´Â ¿¹Á¦¸¦ À§ÇÑ ¿¹Á¦À̱⠶§¹®¿¡ ¾à°£ ¾î»öÇÑ ¸éÀÌ ÀÖ½À´Ï´Ù.
#
# µ¶ÀÚ¸¦ À§ÇÑ ¿¬½À¹®Á¦ 1:
# ¹è¿­À» ÀÐ¾î µéÀÌ°í Ãâ·ÂÇÏ´Â ÇÔ¼ö¸¦ 
# Á» ´õ ±³À°ÀûÀÌ°í ¿ì¾ÆÇÏ°Ô ´Ù½Ã ÀÛ¼ºÇØ º¸¼¼¿ä.
#
# ¿¬½À¹®Á¦ 2:
# ¹è¿­ ȸÀü ÇÔ¼ö°¡ ¾î¶»°Ô µ¿ÀÛÇÏ´ÂÁö ¾Ë¾Æ³» º¸¼¼¿ä.
# ÈùÆ®: ¹è¿­ÀÇ ¿ªÀ妽ÌÀÌ ÀǹÌÇÏ´Â ¹Ù°¡ ¹»±î¿ä?

exit 0