Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
 Аватар для Vaderkos
84 / 83 / 8
Регистрация: 31.03.2015
Сообщений: 447

Можно сделать данный код еще меньше?

11.06.2015, 15:31. Показов 2779. Ответов 35
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Сейчас 195 символов, но можно ли еще меньше?
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
p = int(input())
m = []
for i in range(int(input())):
    m += input()
def f(m):
    w = len(m)
    t = []
    for i in range(2**w):
        s = "{"
        for j in range(w):
            if i & 1 << j:
                s += " " + m[j] + " "
        s += "}"
        t.append(s)
    return t
for y in range(p):
    m = f(m)
for k in m:
    print(k)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.06.2015, 15:31
Ответы с готовыми решениями:

Как можно сделать данный кусок кода меньше и проще?
Задние: Заменить все элементы с четными номерами на значение второго положительного элемента массива. void change() //замена элементов...

Можно ли данный код сделать короче?
#include&lt;iostream&gt; #include&lt;iomanip&gt; int main() { int r,f,a,b,c,d,x,y; cout&lt;&lt;&quot;Vvedite znachenie r:&quot;; cin&gt;&gt;r; ...

Что нужно сделать, чтобы данную функцию можно было вызвать еще раз, не меняя ее код
Функцию add() из фрагмента кода вызвали 10 раз. Что нужно сделать, чтобы эту функцию можно было вызвать еще раз, при этом не меняя...

35
foo();
 Аватар для rattrapper
886 / 587 / 222
Регистрация: 03.07.2013
Сообщений: 1,549
Записей в блоге: 2
13.06.2015, 21:41
Студворк — интернет-сервис помощи студентам
cybercitizen, тоже долго не мог понять. Нужно посчитать f(M, p), где M - мн-во, p - натуральоне.
https://www.cyberforum.ru/cgi-bin/latex.cgi?f(M, p) = \left\{\begin{matrix}2^M, p = 1\\ 2^{f(M, p -1)}, p > 1\end{matrix}\right.

Добавлено через 6 минут
что-то никак с LATEX-ом не договорюсь. В предпросмотре одна формула, в сообщении другая

Добавлено через 1 минуту
Python
1
2
3
4
def f(M, p):
  if p == 1:
    return subsets(M)
  return subsets(f(M, p - 1))
0
 Аватар для cybercitizen
204 / 26 / 5
Регистрация: 22.05.2015
Сообщений: 357
13.06.2015, 21:47
Цитата Сообщение от rattrapper Посмотреть сообщение
Нужно посчитать f(M, p), где M - мн-во, p - натуральоне.
ты предлагаешь считать скаляр, а ему нужны множества. Впрочем, он сам не хочет объяснить нормально что ему надо. Надо только чтобы код короче был... perl в руки, там всё коротко и не понятно.

Добавлено через 49 секунд
И как это, 2Множество?
0
 Аватар для Vaderkos
84 / 83 / 8
Регистрация: 31.03.2015
Сообщений: 447
13.06.2015, 21:47  [ТС]
Я обьясняюсь основываясь на понятиях из дискретной математики
0
 Аватар для cybercitizen
204 / 26 / 5
Регистрация: 22.05.2015
Сообщений: 357
13.06.2015, 21:48
булеан?

Добавлено через 56 секунд
Цитата Сообщение от Vaderkos Посмотреть сообщение
Я обьясняюсь основываясь на понятиях из дискретной математики
ага, 1 2 3 4 5 6 7 A = {1,3,5} P(A).
0
 Аватар для Vaderkos
84 / 83 / 8
Регистрация: 31.03.2015
Сообщений: 447
13.06.2015, 21:48  [ТС]
Да, извиняюсь, так как учусь на польском то называю множеством. Немного не понял сначала что не понятно вам
0
foo();
 Аватар для rattrapper
886 / 587 / 222
Регистрация: 03.07.2013
Сообщений: 1,549
Записей в блоге: 2
13.06.2015, 22:13
Цитата Сообщение от cybercitizen Посмотреть сообщение
И как это, 2Множество?
cybercitizen, у нас так на дискретке обозначалось мн-во всех подмножеств, думал у всех так

Добавлено через 3 минуты
а обозначали так, помню, потому, что |2X| = 2|X|
0
 Аватар для Vaderkos
84 / 83 / 8
Регистрация: 31.03.2015
Сообщений: 447
13.06.2015, 22:26  [ТС]
cybercitizen, rattrapper, у нас так P(A)
0
foo();
 Аватар для rattrapper
886 / 587 / 222
Регистрация: 03.07.2013
Сообщений: 1,549
Записей в блоге: 2
13.06.2015, 22:32
Цитата Сообщение от cybercitizen Посмотреть сообщение
булеан
да. раньше не слышал такого названия
0
13.06.2015, 23:08

Не по теме:

Где-то у меня на erlang, sheme и haskell были такие решения. Не мог же я их удалить. О_о

0
 Аватар для Vaderkos
84 / 83 / 8
Регистрация: 31.03.2015
Сообщений: 447
13.06.2015, 23:13  [ТС]
cybercitizen, Я бы был очень благодарен если вы их найдете
0
 Аватар для cybercitizen
204 / 26 / 5
Регистрация: 22.05.2015
Сообщений: 357
14.06.2015, 15:28

Не по теме:

Я бы сам станцевал, если бы их нашел. Надо еще погуглить по ресурсам, где я их мог оставить.



Добавлено через 16 часов 6 минут
scheme
Lisp
1
2
3
4
5
6
7
8
9
(define (subsets set-lst)
  (if (null? set-lst)
      '(())
      ((lambda (r)
         (append r (map (lambda (a) (cons (car set-lst) a)) r)))
       (subsets (cdr set-lst)))))
 
(subsets '(a b c))
;'(() (c) (b) (b c) (a) (a c) (a b) (a b c))

haskell
Haskell
1
2
3
4
5
6
7
8
9
10
subSets [] = [[]]
subSets (x:xs) = r ++ map (x:) r where r = subSets xs
{-
Prelude> :load ./foo.hs
[1 of 1] Compiling Main             ( foo.hs, interpreted )
Ok, modules loaded: Main.
*Main> subSets [1,2,3]
[[],[3],[2],[2,3],[1],[1,3],[1,2],[1,2,3]]
*Main> 
-}

erlang обновляю рантайм. Интересно что эти функциональные алгоритмы один в один на python не переносятся. Алгоритм, который задействован в 1 посте конечно применим к наким языкам как c, pascal. Но никак не к python, где есть встроенные структуры данных и фвп для работы с ними.
2
 Аватар для Vaderkos
84 / 83 / 8
Регистрация: 31.03.2015
Сообщений: 447
14.06.2015, 16:04  [ТС]
cybercitizen, Спаибо огромное, а вы не могли бы мне обьяснить, что выполнят каждый код, так как я не знаком с этими языками, и не все понимаю.

Добавлено через 16 минут
Или посоветовать какие то уроки или материалы с помощью которых я пойму.
0
 Аватар для cybercitizen
204 / 26 / 5
Регистрация: 22.05.2015
Сообщений: 357
15.06.2015, 14:23
Ну а это для кого?
Haskell
1
2
3
*Main> subSets [1,2,3]
[[],[3],[2],[2,3],[1],[1,3],[1,2],[1,2,3]]
*Main>
Lisp
1
2
(subsets '(a b c))
;'(() (c) (b) (b c) (a) (a c) (a b) (a b c))
erlang
Prolog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
-module(foo).
 
-export([sub_sets/1]).
 
-import(lists, [map/2, append/2]).
 
sub_sets([]) ->
    [[]];
sub_sets([X|Xs]) ->
    F = fun(R) -> 
        lists:append(R, lists:map(fun(A) -> [X|A] end, R))
    end,
    F(sub_sets(Xs)).
%1> c(foo).
%{ok,foo}
%2> foo:sub_sets([1,2,3]).
%[[],[3],[2],[2,3],[1],[1,3],[1,2],[1,2,3]]
%3>
1
 Аватар для Vaderkos
84 / 83 / 8
Регистрация: 31.03.2015
Сообщений: 447
15.06.2015, 14:46  [ТС]
cybercitizen, Я имею ввиду как сделать считывание клавиатуры и что бы можно было использовать функцию подобную к
Python
1
2
for y in range(p):
    m = f(m)
Я попробовал так, но не понимаю как делаются циклы и массивы в scheme
Lisp
1
2
3
4
5
6
7
8
9
10
#lang racket
(define (subsets set-lst)
  (if (null? set-lst)
      '(())
      ((lambda (r)
         (append r (map (lambda (a) (cons (car set-lst) a)) r)))
       (subsets (cdr set-lst)))))
(define w (read)) 
 
(display (subsets (list w)))
0
 Аватар для cybercitizen
204 / 26 / 5
Регистрация: 22.05.2015
Сообщений: 357
15.06.2015, 18:25
Лучший ответ Сообщение было отмечено Vaderkos как решение

Решение

Не по теме:

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


text.txt
12 3 44 5 22

scheme fom file
Lisp
1
2
3
4
5
6
7
8
9
10
(define *file* "/home/andrew/text.txt")
 
(define (get-data)
  (let ((data (with-input-from-file *file*
                (lambda () (read-string 1000))
                #:mode 'text)))
    (map string->number (string-split data))))
 
(get-data)
;'(12 3 44 5 22)

scheme from stdin
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
(define (get-data)
  (let ((data (read (current-input-port))))
    (if (eq? data 'stop)
        '()
        (cons data (get-data)))))
 
(get-data)
;12
;22
;33
;44
;55
;stop
;'(12 22 33 44 55)


Добавлено через 4 минуты
Цитата Сообщение от Vaderkos Посмотреть сообщение
Я попробовал так, но не понимаю как делаются циклы и массивы в scheme
Циклов нет, массивы называются vector. Но у меня всё на списках.
1
 Аватар для castorsky
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
16.06.2015, 22:56
Цитата Сообщение от cybercitizen Посмотреть сообщение
Интересно что эти функциональные алгоритмы один в один на python не переносятся
Потому что императивщина. Надо вывернуть мышление на изнанку.
Python
1
2
3
4
5
6
7
8
9
10
11
12
def cons(item, lst):
    tmp = [item]
    tmp.extend(lst)
    return tmp
 
def subsets(lst):
    if (lst == []):
        return [[]]
    else:
        r = subsets(lst[1:])
        r += map(lambda x: cons(lst[0], x), r)
        return r
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.06.2015, 22:56
Помогаю со студенческими работами здесь

Как еще короче записать данный код?
#include &lt;ios&gt; main() { system(&quot;for /f \&quot;tokens=1,2,3\&quot; %a in (input.txt) do set /a %a*%b*%c*2 &gt;output.txt&quot;); } подсказка...

Как сделать данный текст и еще с поворотамм ?
Падающий текст. Из текстового файла читаются символы, которые «сыплются» с правого верхнего угла экрана. Начальная скорость варьируется в...

Какими ещё способами можно ещё сделать?
Задание: Известно, что: 1 в третей степени будет=1 2 в третей степени будет=3+5 3 в третей степени будет=7+9+11 4 в третей...

Сжать код 140байт. нужно еще меньше.
Сжать как то можно? Сейчас занимает 140B нужно меньше

Как можно максимально оптимизировать данный код через логическое индексирование? Код полностью работает
header = data = , , , , , , , , , , , , ] import numpy as np def salary_info_purchased(data, gender=None, purchased=None): ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
36
Ответ Создать тему
Новые блоги и статьи
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru