The OpenNET Project / Index page

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

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

"Shell Brainstorm IV (Месть байтов) "  +/
Сообщение от pavlinux (ok) on 05-Авг-13, 00:38 
Написать программу, подсчитывающую сколько раз повторяется каждый символ в тексте.
Невидимые обозначить SPACE/TAB/CR/LF/NUL/...  
---

$ cat SOMETEXT.txt | ./counter.sh

A - 654
Б - 78
B - 69
Г - 14
...

...
SPACE - 320
TAB - 23
...

---

Есесенно многопроходный цикл по всему тексту - однозначный фейл!

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

Оглавление

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


1. "Shell Brainstorm IV (Месть байтов) "  +/
Сообщение от аноним22 on 05-Авг-13, 02:53 
если только ASCII то (шикуя памятью) делаем массив int/long/etc нужной размерности.
код символа - индекс.
число - кол-во вхождений. 1 проход и всё посчитано.
но или hash с тем-же смыслом.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

4. "Shell Brainstorm IV (Месть байтов) "  +/
Сообщение от vdool on 06-Авг-13, 00:39 
> если только ASCII то (шикуя памятью) делаем массив int/long/etc нужной размерности.
> код символа - индекс.
> число - кол-во вхождений. 1 проход и всё посчитано.
> но или hash с тем-же смыслом.

замечательно, реализация где?

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

14. "Shell Brainstorm IV (Месть байтов) "  +/
Сообщение от аноним22 on 07-Авг-13, 02:39 
>> если только ASCII то (шикуя памятью) делаем массив int/long/etc нужной размерности.
>> код символа - индекс.
>> число - кол-во вхождений. 1 проход и всё посчитано.
>> но или hash с тем-же смыслом.
> замечательно, реализация где?

вы издеваетесь? для такой задачи?

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

20. "Shell Brainstorm IV (Месть байтов) "  +/
Сообщение от povlinux on 10-Авг-13, 01:03 
>>> если только ASCII то (шикуя памятью) делаем массив int/long/etc нужной размерности.
>>> код символа - индекс.
>>> число - кол-во вхождений. 1 проход и всё посчитано.
>>> но или hash с тем-же смыслом.
>> замечательно, реализация где?
> вы издеваетесь? для такой задачи?

ага :)

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

2. "Shell Brainstorm IV (Месть байтов) "  +/
Сообщение от erera22 email(ok) on 05-Авг-13, 17:28 
cat SOMETEXT.txt | while read w; do for ((i=0; $i<${#w}; i=$(($i+1)))); do echo "${w:$i:1}" ; done ;done | sort | uniq -c
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

3. "Shell Brainstorm IV (Месть байтов) "  +/
Сообщение от erera22 email(ok) on 05-Авг-13, 20:53 
> cat SOMETEXT.txt | while read w; do for ((i=0; $i<${#w}; i=$(($i+1)))); do
> echo "${w:$i:1}" ; done ;done | sort | uniq -c

Хотя, конечно, на каких-то 5889547 символах (сгенерил какой-то текст, для проверки) это уже будет порядка 10 минут считать. Долго. На перле всяко быстрей выйдет:
#!/usr/bin/perl -w
use strict;
use Data::Dumper;

my %h = ();
open (H, '<', 'SOMEFILE.txt');
while (<H>) {
   chomp;
   map { $h{$_} => $h{$_} += 1 } split //, $_;
}
close H;

print Dumper (\%h);

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

6. "Shell Brainstorm IV (Месть байтов) "  –1 +/
Сообщение от parad (ok) on 06-Авг-13, 02:44 
на чистом си короче чем на твоем перле:

#include <unistd.h>
#include <stdio.h>

int main()
{
    unsigned counter[ 0xff ] = { 0 };
    unsigned char buff[1024];
    int res = 0;

    while(( res = read( 0, buff, sizeof( buff )) ) > 0 )
    {
        while(( -- res ) > 0 )
            { ++ counter[ buff[ res ]]; }
    }

    for( unsigned char i = 0; i < sizeof( counter ) / sizeof( * counter ); ++ i )
        { printf( "%c : %u\n", ( char ) i, counter[ i ] ); }
}

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

7. "Shell Brainstorm IV (Месть байтов) "  +/
Сообщение от Andrey Mitrofanov on 06-Авг-13, 09:18 
> на чистом си короче чем на твоем перле:

Приложи Си-компайлер на посикс-шеле! Предыдущему оратору можно "ограничиться" интерпретатором перла на аналогичных условиях.

Скажи, павлин! %))

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

8. "Shell Brainstorm IV (Месть байтов) "  +/
Сообщение от pavel_simple (ok) on 06-Авг-13, 12:36 
>> на чистом си короче чем на твоем перле:
> Приложи Си-компайлер на посикс-шеле! Предыдущему оратору можно "ограничиться" интерпретатором
> перла на аналогичных условиях.
> Скажи, павлин! %))

... - Может и мне сходить, - задумался Петька, почесывая колено.
...

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

9. "Shell Brainstorm IV (Месть байтов) "  +/
Сообщение от parad (ok) on 06-Авг-13, 14:12 
ответ был не на задачу, а на конкретный пост с конкретной претензией: "... на твоем перле"
ты как всегда отвечаешь не на то что написано. андрюх, соберись, рассеянность - это штука такая... часто бывает колеблет окружающих.

пс. что такое си-компайлер?

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

10. "Shell Brainstorm IV (Месть байтов) "  +/
Сообщение от erera22 email(ok) on 06-Авг-13, 14:22 
lol xD, спору нет, можно и на сях, и... Но это уже в дополнение к "а на перле быстрее...". Хотя топик стартер, если верить заголовку, хотел shell. Начиная с перла и далее - оффтоп не более. ;-)
Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

12. "Shell Brainstorm IV (Месть байтов) "  +/
Сообщение от vdool on 06-Авг-13, 23:45 
>> на чистом си короче чем на твоем перле:
> Приложи Си-компайлер на посикс-шеле! Предыдущему оратору можно "ограничиться" интерпретатором
> перла на аналогичных условиях.
> Скажи, павлин! %))

ну поймой-му с Ц на баш проще сего портировать

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

15. "Shell Brainstorm IV (Месть байтов) "  +/
Сообщение от erera22 email(ok) on 07-Авг-13, 15:28 
>>> на чистом си короче чем на твоем перле:
>> Приложи Си-компайлер на посикс-шеле! Предыдущему оратору можно "ограничиться" интерпретатором
>> перла на аналогичных условиях.
>> Скажи, павлин! %))
> ну поймой-му с Ц на баш проще сего портировать

Странное обсуждение "на что проще портировать однострочник". В любом случае, если perl вызывает попаболь, то надо делать на том, что действительно привычнее, хотя бы Си.

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

5. "Shell Brainstorm IV (Месть байтов) "  +/
Сообщение от parad (ok) on 06-Авг-13, 02:28 
кодировка какая?
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

11. "Shell Brainstorm IV (Месть байтов) "  +/
Сообщение от vdool on 06-Авг-13, 23:32 
> кодировка какая?

придумай свою :)

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

13. "Shell Brainstorm IV (Месть байтов) "  +/
Сообщение от LSTemp (ok) on 07-Авг-13, 00:49 
>[оверквотинг удален]
> Б - 78
> B - 69
> Г - 14
> ...
> ...
> SPACE - 320
> TAB - 23
> ...
> ---
> Есесенно многопроходный цикл по всему тексту - однозначный фейл!

ИМХО исходя из условий предыдушего штурма и (Ваших комментариев в конце) требуется подсчитать количество вхождений только определенного набора символов, что должно значительно ускорить процесс.


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

16. "Shell Brainstorm IV (Месть байтов) "  +/
Сообщение от Тумбуль Юхансон on 08-Авг-13, 03:16 
>[оверквотинг удален]
>> ...
>> ...
>> SPACE - 320
>> TAB - 23
>> ...
>> ---
>> Есесенно многопроходный цикл по всему тексту - однозначный фейл!
> ИМХО исходя из условий предыдушего штурма и (Ваших комментариев в конце) требуется
> подсчитать количество вхождений только определенного набора символов, что должно значительно
> ускорить процесс.

исходя из условий требуется подсчитать повторы всех имеющихся букав и не букав (ака символы.)

в выше написанной строке, буква:
"А" встречается 0 раз
тоже  Б, В, Г, ..., Э, Ю, Я - 0 раз,
"а" - 5 раз,
б - 3 раза,
...
э - 0 раз,
ю - 1 раз,
я - 1 раз.

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

17. "Shell Brainstorm IV (Месть байтов) "  +/
Сообщение от LSTemp (ok) on 09-Авг-13, 06:55 
>[оверквотинг удален]
> (ака символы.)
> в выше написанной строке, буква:
> "А" встречается 0 раз
> тоже  Б, В, Г, ..., Э, Ю, Я - 0 раз,
> "а" - 5 раз,
> б - 3 раза,
> ...
> э - 0 раз,
> ю - 1 раз,
> я - 1 раз.

специально для Вас, уважаемый Тумбуль Юхансон:
http://www.opennet.dev/openforum/vsluhforumID9/9656.html

PS
обратите внимание в моем ответе на фразу "предыдущий штурм"

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

PSSS
правда жаль, что pavlinux сразу не сказал, чего хотел добиться - т.е. решаемой задачи. так что "мзговой штурм" ИМХО тут лишне было, хотя заинтриговал.... )


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

18. "Shell Brainstorm IV (Месть байтов) "  +/
Сообщение от DeadLoco (ok) on 09-Авг-13, 20:53 
> Написать программу, подсчитывающую сколько раз повторяется каждый символ в тексте.

#!/bin/sh
cat /dev/stdin | sed 's/./& \
/g' | sort | uniq -c

Делать трансляцию невидимых лениво.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

19. "Shell Brainstorm IV (Месть байтов) "  +/
Сообщение от povlinux on 10-Авг-13, 01:01 
>> Написать программу, подсчитывающую сколько раз повторяется каждый символ в тексте.
>
#!/bin/sh 
> cat /dev/stdin | sed 's/./& \
> /g' | sort | uniq -c

> Делать трансляцию невидимых лениво.

Реализовать cat, sed, sort, uniq на баше :)

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

21. "Shell Brainstorm IV (Месть байтов) "  +/
Сообщение от DeadLoco (ok) on 10-Авг-13, 01:13 
> Реализовать cat, sed, sort, uniq на баше :)

А ты ваще кто такой?

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

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

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




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

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