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