Fórum Root.cz
		Hlavní témata => Vývoj => Téma založeno: krcek12  05. 05. 2011, 14:17:27
		
			
			- 
				Hezdy den vsem,
 
 Potreboval bych mensi radu... Mam za ukol vytvorit script, ktery by vykresloval tohle?:
 
 ..
 ....
 ......
 .........
 ...........
 .........
 .......
 ....
 ..
 Mam tohle :
 
 znaku=0
 while [ $znaku -lt 12 ]; do
 znak=0
 while [ $znak -lt $znaku ]; do
 echo -n "H"
 echo ""
 znak=$(( znak+1 ))
 done
 znaku=$(( znaku+1 ))
 done
 To je prvni pulka a potreboval bych vykreslit tu spodni cast.
 Diky moc
- 
				#!/bin/bash
 a=..
 b=0
 while [ $b -le 4 ]; do
 echo $a
 a=$a".."
 b=$((b+1))
 done
 echo $a
 until [ $b -eq 0 ]; do
 a=${a:2}
 echo $a
 b=$((b-1))
 done
- 
				no, sice je to v ruby, ale muzes se inspirovat. treba u change (+1/-1). max urcuje hloubku "zanoreni"
 
 
 #!/usr/bin/env ruby
 max=5
 pokracuj=1; num=0; change=1
 while 1
 num=num+change
 num.times { print ".." }
 if num == max then
 change=-1
 elsif num == 0 then
 break
 end
 puts
 end
 
 
- 
				v bashi som davno nepisal, ale co takto rekurzia?
 
 def f(n,max,delta):
 print n*char
 if n<max:
 f(n+delta,max,delta)
 print n*char
 
- 
				Pokud to mas do skoly, tak tvuj vyucujici bude mit asi nejvetsi radost z tohohle:
 #!/bin/bash
 function ukaz_tecky()
 {
 local MAX=$1
 
 for i in $(seq 1 $MAX); do
 for j in $(seq 1 $i); do
 echo -n ..
 done
 echo ""
 done
 
 for i in $(seq 2 $MAX); do
 for j in $(seq $i $MAX); do
 echo -n ..
 done
 echo ""
 done
 }
 
 ukaz_tecky 5
 
- 
				Tohle bude zarucene nejrychlejsi :)
 echo "..
 ....
 ......
 .........
 ...........
 .........
 .......
 ....
 .."
 marek
- 
				#/bin/bash
 BLABLA=""
 for ((i=0;i<MAX/2;i++)); do BLABLA="${BLABLA}.."; done
 for ((i=0;i<10;i=i+2)); do echo ${BLABLA:0:i}; done
 for ((i=0;i<10;i=i+2)); do echo ${BLABLA:i}; done
 
 
Ale ta rekurse je stejne nejhezci.
 marek
- 
				#/bin/bash
 MAX=10
 BLABLA=""
 for ((i=0;i<MAX/2;i++)); do BLABLA="${BLABLA}.."; done
 for ((i=0;i<MAX;i=i+2)); do echo ${BLABLA:0:i}; done
 for ((i=0;i<MAX;i=i+2)); do echo ${BLABLA:i}; done
 
Omyl
 marek
- 
				oneliner:
 S=.......... ; for i in 2 4 6 8 10 8 6 4 2 ; do echo ${S:1:$i} ; done
- 
				Ještě vylepšená verze (M je sudé a minimálně 2)
 
 M=10 ; S=`for((i=0;i<=$M;i++)); do echo -n . ; done` ; for i in `seq 2 2 $M` `seq $(($M-2)) -2 2` ; do echo ${S:1:$i} ; done