The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Вопрос по циклам"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (Shell скрипты)
Изначальное сообщение [ Отслеживать ]

"Вопрос по циклам"  –1 +/
Сообщение от Raven77 email(ok) on 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

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Вопрос по циклам"  +/
Сообщение от hizel (ok) on 27-Авг-13, 14:52 
$100
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Вопрос по циклам"  +/
Сообщение от михалыч (ok) on 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

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

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

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

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

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

5. "Вопрос по циклам"  +/
Сообщение от Raven77 email(ok) on 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
и т.д. :)

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

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

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

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

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

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

Изящно!

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

16. "Вопрос по циклам"  +/
Сообщение от Andrey Mitrofanov on 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}'

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

4. "Вопрос по циклам"  +/
Сообщение от Raven77 email(ok) on 27-Авг-13, 20:43 
Михалыч, пасиб.
Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

8. "Вопрос по циклам"  +/
Сообщение от John (??) on 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

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

9. "Вопрос по циклам"  +/
Сообщение от John (??) on 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

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

Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

10. "Вопрос по циклам"  +/
Сообщение от John (??) on 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

Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

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

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

Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору

12. "Вопрос по циклам"  +/
Сообщение от Andrey Mitrofanov on 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

Ответить | Правка | ^ к родителю #11 | Наверх | Cообщить модератору

13. "Вопрос по циклам"  +/
Сообщение от Raven77 email(ok) on 28-Авг-13, 19:31 
Я раздавлен от кол-ва вариантов и оттого, что не додумался ни до одного
Ответить | Правка | ^ к родителю #12 | Наверх | Cообщить модератору

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

15. "Вопрос по циклам"  +/
Сообщение от Аноним (??) on 29-Авг-13, 02:54 
Ну ты и быдлoкoдep павлинукс :) Вон же выше красивые варианты лежат.
Ответить | Правка | ^ к родителю #14 | Наверх | Cообщить модератору

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

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

Ответить | Правка | ^ к родителю #15 | Наверх | Cообщить модератору

18. "Вопрос по циклам"  –1 +/
Сообщение от Andrey Mitrofanov on 31-Авг-13, 08:55 
:1

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

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

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

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

Не замечал?

> и awk :-P

Ответить | Правка | ^ к родителю #17 | Наверх | Cообщить модератору

19. "Вопрос по циклам"  +/
Сообщение от pavlinux (ok) on 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 долго соображает!!! :)

> Не замечал?

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

Ответить | Правка | ^ к родителю #18 | Наверх | Cообщить модератору

20. "Вопрос по циклам"  +/
Сообщение от Raven77 email(ok) on 31-Авг-13, 16:37 
Ребята, независимо от чужого и собственного понимания тонкостей и особенностей стилей программирования хотел бы выразить благодарность от лица одного небогатого российского музея, которому вы очень помогли решить прикладную задачу.
Ответить | Правка | ^ к родителю #19 | Наверх | Cообщить модератору

21. "Вопрос по циклам"  +/
Сообщение от DeadLoco (ok) on 31-Авг-13, 22:46 
> хотел бы выразить благодарность от лица одного небогатого российского музея

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


Ответить | Правка | ^ к родителю #20 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру