решение задач на Python (для новичков)
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
решение задач на Python (для новичков) - 2009-06-09 17:20:20.290000
|
|
|
relax_aka_men
Сообщений: 58
Оценки: 0
Присоединился: 2008-11-06 18:53:10.760000
|
все вопросы по этой теме предлагаю выкладывать здесь….. задача намбер ван нужно декодировать телефонный номера для АОН. По запросу АОНа АТС посылает телефонный номер, используя следующие правила: - Если цифра повторяется менее 2 раз, то это помеха и она должна быть отброшена - Каждая значащая цифра повторяется минимум 2 раза - Если в номере идут несколько цифр подряд, то для обозначения «такая же цифра как предыдущая» используется идущий 2 или более подряд раз знак # Например, входящая строка 4434###552222311333661 соответствует номеру 4452136 Кстати, регулярные выражения использовать в этих заданиях - нельзя :) написал маленькую чаcть кода, но не знаю как в цикле написать, что бы нужные буквы в другую строку записать
str_in = input("Введите номер антиАОН: ")
str_out = ""
for i in range(len(str_in)):
print(str_out)
|
|
|
RE: решение задач на Python (для новичков) - 2009-06-09 18:30:00.813333
|
|
|
zhuk
Сообщений: 2962
Оценки: 10
Присоединился: 2007-02-20 21:00:01.303333
|
Я что-то пытался ваять на Питоне, но не до такой степени :) Не понял, что тебе нужно. Присвоить другой строке str_out?
|
|
|
RE: решение задач на Python (для новичков) - 2009-06-09 18:35:34.736666
|
|
|
relax_aka_men
Сообщений: 58
Оценки: 0
Присоединился: 2008-11-06 18:53:10.760000
|
str_in - это входяшяя строка с номером str_out - строка каторая должна получится после так сказать декодирования
|
|
|
RE: решение задач на Python (для новичков) - 2009-06-10 03:08:44.286666
|
|
|
dOver
Сообщений: 140
Оценки: 0
Присоединился: 2007-03-31 04:41:56.070000
|
Я в питоне не силен (только сегодня поставил:) ) , но алгоритм будет следущий: Надо подсчитать количество каждого символа в цикле, если больше 1, увеличить на единицу и добавить к выходной строке. Если меньше или 1 - не добавляем. Если стоит #, то найти первый перед ним символ и добавить к выходной строке.
|
|
|
RE: решение задач на Python (для новичков) - 2009-06-10 09:04:16.546666
|
|
|
relax_aka_men
Сообщений: 58
Оценки: 0
Присоединился: 2008-11-06 18:53:10.760000
|
ну сам алгоритм я уже понял, вечером попробую что нибуть навоять
|
|
|
RE: решение задач на Python (для новичков) - 2009-06-26 07:44:41.173333
|
|
|
vzlomer
Сообщений: 3
Оценки: 0
Присоединился: 2009-06-26 05:13:18.946666
|
>>что бы нужные буквы в другую строку записать Не очень понял твою проблему. Тебе не это?: print 'vzlomer'[::-1] >>>remolzv
|
|
|
RE: решение задач на Python (для новичков) - 2009-06-26 11:03:08.900000
|
|
|
relax_aka_men
Сообщений: 58
Оценки: 0
Присоединился: 2008-11-06 18:53:10.760000
|
ухоха!!! ты задание видел??? если нет то задай конкретный вопрос!!! P.S. это фитчу с обратным отоброжение символов я знаю и она здесь не причем
|
|
|
RE: решение задач на Python (для новичков) - 2009-06-26 16:17:00.906666
|
|
|
Анон
Сообщений: 632
Оценки: 0
Присоединился: 2008-07-21 22:14:59.233333
|
Вот такое дело у меня получилось на C, только его ещё надо допилить(в частности неверный результат, если ввод начинается с '#'), но вроде работает.
#include <stdio.h>
#include <ctype.h>
void main() {
char line[80]; /* input buffer */
char *curr = line; /* current character */
char lastdig; /* last accepted digit */
fgets(line, sizeof(line), stdin);
while(*curr != '\0') {
char next = *(curr+1);
char prev = *(curr-1);
if (isdigit(*curr)) {
if ((next != *curr) && (prev == *curr)) {
lastdig = *curr;
putchar(*curr);
}
}
else if (*curr == '#') {
if ((next != *curr) && (prev == *curr))
putchar(lastdig);
}
++curr;
}
putchar('\n');
}
|
|
|
RE: решение задач на Python (для новичков) - 2009-06-26 16:57:46.580000
|
|
|
relax_aka_men
Сообщений: 58
Оценки: 0
Присоединился: 2008-11-06 18:53:10.760000
|
ок) фенкью… шя попробую на python переделать…
|
|
|
RE: решение задач на Python (для новичков) - 2009-07-14 21:00:15.430000
|
|
|
once
Сообщений: 1
Оценки: 0
Присоединился: 2009-07-14 20:57:09.236666
|
у меня вот, что получилось:
s = "##112#334555556#####5"
res = ""
prevc = 0
pos = 0
for c in s:
if(c == '#' and prevc):
c = prevc
if(prevc == c and pos == 0):
res = res + c
pos = 1
elif(not prevc == c):
pos = 0
if(not c == '#'):
prevc = c
print(res)
|
|
|
RE: решение задач на Python (для новичков) - 2012-02-24 02:10:13.056666
|
|
|
Kutas
Сообщений: 1
Оценки: 0
Присоединился: 2012-02-24 01:00:34.213333
|
"2#" в коде не должно давать "2" в результате,если я правильно понял условия. А вот "2##" должно давать "2".. code = "0#3556##7766778#24" q=0 previ="" res="" for i in code: if i==previ: q=q+2 elif i=="#" : q=q+1 else: previ=i q=0 if q==2: res=res+previ print res
|
|
|
|
|