URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 9729
[ Назад ]

Исходное сообщение
"Вопрос по циклам"

Отправлено Raven77 , 27-Авг-13 14:30 
Нужно вывести числа в порядке возрастания до 100, а перед числами буквы русского алфавита по порядку, алфавит следует повторить заново, когда число сравняется с последней буквой алфавита  
Что-то обратное вот этому, но еще и с русскими буквами:
i=0; for name in {a..z}; do  i=$[ i+1 ]; echo $name$i; done

и что-то вроде:
а1
б2
в3
...
я33
а34


Содержание

Сообщения в этом обсуждении
"Вопрос по циклам"
Отправлено hizel , 27-Авг-13 14:52 
$100

"Вопрос по циклам"
Отправлено михалыч , 27-Авг-13 19:57 
Тупо в лоб.

#!/bin/sh

i=1
while [ $i -le 100 ]; do
    for lit in а б в г д е ё ж з и й к л м н о п р с т у ф х ц ч ш щ ъ ы ь э ю я; do
        echo $lit$i
        i=$(expr $i + 1)
        if [ $i -ge 101 ]; then break; fi
#        if [ $i -ge 101 ]; then exit; fi
    done
done


"Вопрос по циклам"
Отправлено Andrey Mitrofanov , 27-Авг-13 20:31 
> Тупо в лоб.
> #!/bin/sh
> i=1

Ну, хоть подождал бы недельку, чтоб студиозус обломался с пересдачей...

bash$ L=абвгдеёжзийклмнопрстуфхцчшщъыьэюя;for i in {1..100}; do echo "${L:$(((i-1)%${#L})):1}$i"; done


"Вопрос по циклам"
Отправлено Raven77 , 27-Авг-13 20:46 
>> Тупо в лоб.
>> #!/bin/sh
>> i=1
> Ну, хоть подождал бы недельку, чтоб студиозус обломался с пересдачей...
> bash$ L=абвгдеёжзийклмнопрстуфхцчшщъыьэюя;for i in {1..100}; do echo "${L:$(((i-1)%${#L})):1}$i";
> done

Я давно все экзамены сдал (я гуманитарий), мне для практических целей на работе,
надо сгенерировать много цифр с буквами для картотеки.

Жалко людей стало, сидят и вбивают в документ вручную =)
a1
a2
и т.д. :)


"Вопрос по циклам"
Отправлено Andrey Mitrofanov , 27-Авг-13 21:06 
> Жалко людей стало, сидят и вбивают в документ вручную =)
> a1
> a2
> и т.д. :)

Да, жалко. Людей. Которые решают не ту задачу.

>> и что-то вроде:
>> а1
>> б2
>> в3


"Вопрос по циклам"
Отправлено михалыч , 27-Авг-13 20:52 
> bash$ L=абвгдеёжзийклмнопрстуфхцчшщъыьэюя;for i in {1..100}; do echo "${L:$(((i-1)%${#L})):1}$i"; done

Изящно!


"Вопрос по циклам"
Отправлено Andrey Mitrofanov , 29-Авг-13 10:07 
>> Тупо в лоб.
>> #!/bin/sh
>> i=1
> Ну, хоть подождал бы недельку, чтоб студиозус обломался с пересдачей...
> bash$ L=абвгдеёжзийклмнопрстуфхцчшщъыьэюя;for i in {1..100};do echo "${L:$(((i-1)%${#L})):1}$i";done

Продолжаем развлекаться. Ремейк для нашего друга павлина.

$ gawk 'BEGIN{split("абвгдеёжзийклмнопрстуфхцчшщъыьэюя",a,"");for(;i<100;)print a[i%length(a)+1]""++i}'


"Вопрос по циклам"
Отправлено Raven77 , 27-Авг-13 20:43 
Михалыч, пасиб.

"Вопрос по циклам"
Отправлено John , 27-Авг-13 21:41 
>[оверквотинг удален]
> Что-то обратное вот этому, но еще и с русскими буквами:
> i=0; for name in {a..z}; do  i=$[ i+1 ]; echo $name$i;
> done
> и что-то вроде:
> а1
> б2
> в3
> ...
> я33
> а34

echo -e {а,б,в,г,д,е,ё,ж,з,и,й,к,л,м,н,о,п,р,с,т,у,ф,х,ц,ч,ш,щ,ъ,ы,ь,э,ю,я}{1..100}\\n


"Вопрос по циклам"
Отправлено John , 27-Авг-13 22:26 
>[оверквотинг удален]
>> i=0; for name in {a..z}; do  i=$[ i+1 ]; echo $name$i;
>> done
>> и что-то вроде:
>> а1
>> б2
>> в3
>> ...
>> я33
>> а34
> echo -e {а,б,в,г,д,е,ё,ж,з,и,й,к,л,м,н,о,п,р,с,т,у,ф,х,ц,ч,ш,щ,ъ,ы,ь,э,ю,я}{1..100}\\n

не подходит - невнимательно прочитал условие


"Вопрос по циклам"
Отправлено John , 27-Авг-13 22:43 
>[оверквотинг удален]
>>> done
>>> и что-то вроде:
>>> а1
>>> б2
>>> в3
>>> ...
>>> я33
>>> а34
>> echo -e {а,б,в,г,д,е,ё,ж,з,и,й,к,л,м,н,о,п,р,с,т,у,ф,х,ц,ч,ш,щ,ъ,ы,ь,э,ю,я}{1..100}\\n
> не подходит - невнимательно прочитал условие

printf "$(printf '%s%%s\\n' {а,б,в,г,д,е,ё,ж,з,и,й,к,л,м,н,о,п,р,с,т,у,ф,х,ц,ч,ш,щ,ъ,ы,ь,э,ю,я})" {1..100} | head -n 100


"Вопрос по циклам"
Отправлено Raven77 , 28-Авг-13 00:17 
>[оверквотинг удален]
>>>> а1
>>>> б2
>>>> в3
>>>> ...
>>>> я33
>>>> а34
>>> echo -e {а,б,в,г,д,е,ё,ж,з,и,й,к,л,м,н,о,п,р,с,т,у,ф,х,ц,ч,ш,щ,ъ,ы,ь,э,ю,я}{1..100}\\n
>> не подходит - невнимательно прочитал условие
> printf "$(printf '%s%%s\\n' {а,б,в,г,д,е,ё,ж,з,и,й,к,л,м,н,о,п,р,с,т,у,ф,х,ц,ч,ш,щ,ъ,ы,ь,э,ю,я})"
> {1..100} | head -n 100

Вот это круто.


"Вопрос по циклам"
Отправлено Andrey Mitrofanov , 28-Авг-13 09:15 
>> printf "$(printf '%s%%s\\n' {а,б,в,г,д,е,ё,ж,з,и,й,к,л,м,н,о,п,р,с,т,у,ф,х,ц,ч,ш,щ,ъ,ы,ь,э,ю,я})"
>> {1..100} | head -n 100
> Вот это круто.

Да! Продолжим:

$ printf "`sed s/./\&%s\\\n/g<<<абвгдеёжзийклмнопрстуфхцчшщъыьэюя`\n" {1..100} |head -n 100

> printf "`printf '%s%%s\\n' {а,б,в,г,д,е,ё,ж,з,и,й,к,л,м,н,о,п,р,с,т,у,ф,х,ц,ч,ш,щ,ъ,ы,ь,э,ю,я}`" {1..100} |head -n 100


"Вопрос по циклам"
Отправлено Raven77 , 28-Авг-13 19:31 
Я раздавлен от кол-ва вариантов и оттого, что не додумался ни до одного

"Вопрос по циклам"
Отправлено pavlinux , 29-Авг-13 02:38 
echo "а б в г д е ё ж з и й к л м н о п р с т у ф х ц ч ш щ ъ ы ь э ю я" | awk '{ k=1; for (i = 0; i < 100; ++i) printf "%s%s\n", $(i%(length($0)/2)+1), k++ }'

"Вопрос по циклам"
Отправлено Аноним , 29-Авг-13 02:54 
Ну ты и быдлoкoдep павлинукс :) Вон же выше красивые варианты лежат.

"Вопрос по циклам"
Отправлено pavlinux , 30-Авг-13 16:51 
> Ну ты и быдлoкoдep павлинукс :) Вон же выше красивые варианты лежат.

Там printf, printf (sed) и 1 раз head, что явно тормознутее есho и awk :-P


"Вопрос по циклам"
Отправлено Andrey Mitrofanov , 31-Авг-13 08:55 
:1

>> Ну ты и быдлoкoдep павлинукс
> 1 раз head, что явно тормознутее есho

IF ты правда оптимизируешь по скорости вывод 100 коротеньких строк текста??
THEN GOTO 1
ELSE

Либо ты так толсто набрасываешь, что никто не понимает, либо ты сам не понимаешь, поэтому никто не понимает, либо ты пишешь полную ...., поэтом никто не понимает.

Никто не понимает, некоторые даже переспрашивают, спорят, и тебе приходится объяснять "второй раз". Или отмазываться?

Не замечал?

> и awk :-P


"Вопрос по циклам"
Отправлено pavlinux , 31-Авг-13 16:05 
> IF ты правда оптимизируешь по скорости вывод 100 коротеньких строк текста??

head - это echo сo счётчиком, да и еще с парсером argv[] :-P


$ time echo "а б в г д е ё ж з и й к л м н о п р с т у ф х ц ч ш щ ъ ы ь э ю я" | awk '{ k=1; for (i = 0; i < 100; ++i) printf "%s%s\n", $(i%(length($0)/2)+1), k++ }'

real    0m0.009s
user    0m0.004s
sys     0m0.005s

% time     seconds  usecs/call     calls    errors syscall
------ ----------- ----------- --------- --------- ----------------
100.00    0.000025           1        21           fstat
  0.00    0.000000           0         4           read
  0.00    0.000000           0         1           write
  0.00    0.000000           0        20           open
  0.00    0.000000           0        22           close
  0.00    0.000000           0        26           mmap
  0.00    0.000000           0         5           mprotect
  0.00    0.000000           0         4           munmap
  0.00    0.000000           0         3           brk
  0.00    0.000000           0         1           access
  0.00    0.000000           0         1           execve
  0.00    0.000000           0         1           arch_prctl
------ ----------- ----------- --------- --------- ----------------
100.00    0.000025                   109           total


---
$ time printf "`sed s/./\&%s\\\n/g<<<абвгдеёжзийклмнопрстуфхцчшщъыьэюя`\n" {1..100} |head -n 100

real    0m0.013s
user    0m0.004s
sys     0m0.011s

% time     seconds  usecs/call     calls    errors syscall
------ ----------- ----------- --------- --------- ----------------
40.62    0.000039          39         1           write
31.25    0.000030           8         4           read
28.12    0.000027           1        26           mmap
  0.00    0.000000           0        20           open
  0.00    0.000000           0        22           close
  0.00    0.000000           0        21           fstat
  0.00    0.000000           0         5           mprotect
  0.00    0.000000           0         4           munmap
  0.00    0.000000           0         3           brk
  0.00    0.000000           0         1           access
  0.00    0.000000           0         1           execve
  0.00    0.000000           0         1           arch_prctl
------ ----------- ----------- --------- --------- ----------------
100.00    0.000096                   109           total


У тя write долго соображает!!! :)

> Не замечал?

Я заметил, что никто косяк не заметил :)


"Вопрос по циклам"
Отправлено Raven77 , 31-Авг-13 16:37 
Ребята, независимо от чужого и собственного понимания тонкостей и особенностей стилей программирования хотел бы выразить благодарность от лица одного небогатого российского музея, которому вы очень помогли решить прикладную задачу.

"Вопрос по циклам"
Отправлено DeadLoco , 31-Авг-13 22:46 
> хотел бы выразить благодарность от лица одного небогатого российского музея

Поблагодарили - и отбегайте, а еще лучше - в укрытие, а то ударной волной накроет :)