Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/21: Рейтинг темы: голосов - 21, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 29.03.2021
Сообщений: 17

Задача с выводом на печать 252 строчек

05.04.2021, 19:01. Показов 4789. Ответов 18

Студворк — интернет-сервис помощи студентам
Нужно вывести 252 различных строчки, в которых 5 нулей и 5 единиц.

Python
1
2
3
4
5
6
7
for x in range(252):
    import random
    from random import shuffle
    from random import sample
    list = [1, 0, 1, 0, 1, 0, 1, 0, 1, 0]
    a = random.sample(list, 10)
    print(*a, sep = '')
Что тут исправить?
Яндекс Контест не принимает, я так понимаю, из за того, что встречаются парные строчки, как их избежать?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.04.2021, 19:01
Ответы с готовыми решениями:

Задача с выводом треугольной матрицы на печать
(f90) нужно решить данную задачу: Вводится матрица А(5,5) . Вывести на печать: СУММА ЧЕТНЫХ ЭЛ-ТОВ СТРОКИ ТРЕУГОЛЬНОЙ МАТРИЦЫ ...

Ввести элементы одномерного массива размером 30 с клавиатуры и вывести на печать в несколько строчек.
Цель работы: Освоить типовые приемы ввода и вывода элементов массивов. 1. Ввести элементы одномерного массива размером 30 с...

Проблема с выводом на печать
ВыбратьГруппуДистрибьютора(ТекДистриб); ВычислитьОПпоГруппе(РегПродажи); ПечДистрибьютор = ТекДистриб; ПечЗПЛичная = ЗПЛичная; ...

18
130 / 41 / 19
Регистрация: 31.03.2020
Сообщений: 63
05.04.2021, 19:18
Лучший ответ Сообщение было отмечено Trailx как решение

Решение

Я уверен есть лучшее решение, но и так должно пройти:
Python
1
2
3
4
5
6
7
8
9
10
from random import shuffle
 
l = [1] * 5 + [0] * 5
p = []
for x in range(252):
    shuffle(l)
    while l in p:
        shuffle(l)
    p.append(l[:])
    print(*l, sep='')
1
Эксперт Python
8849 / 4500 / 1864
Регистрация: 27.03.2020
Сообщений: 7,316
05.04.2021, 19:37
Trailx,
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
### 1
from random import shuffle
xset = set()
lst = [1, 0, 1, 0, 1, 0, 1, 0, 1, 0]
while len(xset) < 252:
    shuffle(lst)
    xset.add(tuple(lst))
for x in xset:
    print(*x)
print()
 
### 2
i = k = 0
while k < 252:
    s = bin(i)[2:].rjust(10, '0')
    if s.count('1') == 5:
        print(' '.join(s))
        k += 1
    i += 1
0
63 / 52 / 11
Регистрация: 14.01.2021
Сообщений: 406
05.04.2021, 22:53
Gdez,
Python
1
2
3
4
5
6
7
for x in range(252):
    import random
    from random import shuffle
    from random import sample
    list = [1, 0, 1, 0, 1, 0, 1, 0, 1, 0]
    a = random.sample(list, 10)
    print(*a, sep = '')
если так сделать, то весь модуль random, shuffle и sample из него будут импортироваться 256 раз?
0
Эксперт Python
8849 / 4500 / 1864
Регистрация: 27.03.2020
Сообщений: 7,316
06.04.2021, 04:48
gray621, из условия задачи возможно всего(!) 252 различных комбинаций (5 нулей и 5 единиц). В задаче нужно найти все(!) эти комбинации.
Проверка всех комбинаций
Python
1
2
3
4
5
6
7
8
9
ss = set()
i = k = 0
while i < 1024:
    s = bin(i)[2:].rjust(10, '0')
    if s.count('1') == 5 :
        ss.add(''.join(s))
        k += 1
    i += 1
print(k)
0 - 0000000000
1023 - 1111111111 - 10 цифр
0
63 / 52 / 11
Регистрация: 14.01.2021
Сообщений: 406
06.04.2021, 10:52
Gdez, понятно, но будет ли модуль random импортироваться 252 раза?
0
Эксперт Python
8849 / 4500 / 1864
Регистрация: 27.03.2020
Сообщений: 7,316
06.04.2021, 11:15
gray621, полноценная инициализация, если не ошибаюсь, осуществится в первый вызов. Остальные вызовы в цикле практически не повлияют на память и скорость выполнения кода.
Если честно, не задавался таким вопросом - привык импортировать в начале кода (начале функции и тп)
1
63 / 52 / 11
Регистрация: 14.01.2021
Сообщений: 406
06.04.2021, 11:52
как посчитать сколько всего будет комбинаций из 5 нулей и 5 единиц?
0
Status 418
Эксперт Python
4584 / 2350 / 601
Регистрация: 26.11.2017
Сообщений: 5,262
Записей в блоге: 3
06.04.2021, 12:35
Цитата Сообщение от gray621 Посмотреть сообщение
сколько всего будет комбинаций из 5 нулей и 5 единиц
252

Добавлено через 4 минуты
зачем тут вообще random?
0
63 / 52 / 11
Регистрация: 14.01.2021
Сообщений: 406
06.04.2021, 12:39
вот пишет все возможные размещения 5 нулей и 5 единиц
Python
1
print(*("".join(i) for i in __import__("itertools").permutations("0000011111", 10)), sep="\n")
вот как бы я решал задачу
Python
1
print(*("".join(i) for i in sorted(set(__import__("itertools").permutations("0000011111", 10)))[:252]), sep="\n")


Добавлено через 40 секунд
eaa, по условии задачи нужно только часть вывести
0
Эксперт Python
8849 / 4500 / 1864
Регистрация: 27.03.2020
Сообщений: 7,316
06.04.2021, 12:42
gray621, или единиц или нулей -> количество сочетаний 5 из 10 = 10!/(5!*5!)
1
63 / 52 / 11
Регистрация: 14.01.2021
Сообщений: 406
06.04.2021, 12:44
лучше вот так тогда
Python
1
print(*("".join(i) for i in sorted(set(__import__("itertools").permutations("0000011111", 10)))), sep="\n")
Добавлено через 1 минуту
можно и без sorted (sorted для красоты)
Python
1
print(*("".join(i) for i in set(__import__("itertools").permutations("0000011111", 10))), sep="\n")
0
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
06.04.2021, 12:48
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
def next_permutation(a):
    """Generate the lexicographically next permutation inplace.
 
    https://en.wikipedia.org/wiki/Permutation#Generation_in_lexicographic_order
    Return false if there is no next permutation.
    """
    # Find the largest index i such that a[i] < a[i + 1]. If no such
    # index exists, the permutation is the last permutation
    for i in reversed(range(len(a) - 1)):
        if a[i] < a[i + 1]:
            break  # found
    else:  # no break: not found
        return False  # no next permutation
 
    # Find the largest index j greater than i such that a[i] < a[j]
    j = next(j for j in reversed(range(i + 1, len(a))) if a[i] < a[j])
 
    # Swap the value of a[i] with that of a[j]
    a[i], a[j] = a[j], a[i]
 
    # Reverse sequence from a[i + 1] up to and including the final element a[n]
    a[i + 1:] = reversed(a[i + 1:])
    return True
a = [0] * 5 + [1] * 5
for _ in range(252):
    next_permutation(a)
    print(*a, sep="")
0
63 / 52 / 11
Регистрация: 14.01.2021
Сообщений: 406
06.04.2021, 12:56
Цитата Сообщение от Gdez Посмотреть сообщение
количество сочетаний
здесь не сочетания, а размещения, т.к. есть всего 1 множество (0, 0, 0, 0, 0, 1, 1, 1, 1, 1)
сочетаний тут будет всего 1
0
Эксперт Python
8849 / 4500 / 1864
Регистрация: 27.03.2020
Сообщений: 7,316
06.04.2021, 13:02
gray621,

Не по теме:

количество комбинаций при выборке "m" объектов из "n" возможных различными способами называется сочетанием

1
06.04.2021, 13:11

Не по теме:

Gdez, я запутался
Чтобы найти число сочетаний из n объектов по k, будем выбирать комбинации из m объектов все возможными способами, при этом будем обращать внимание на разный состав комбинаций, но не порядок (он тут не важен, в отличие от размещений).

То есть в сочетаниях нет повторений множеств объектов. Например: сочетания из 123 длиной 2 (12, 13, 23), то есть c из 3 по 2 = 3.

Пусть имеется n различных объектов.
Будем выбирать из них k объектов и переставлять всеми возможными способами между собой (то есть меняется и состав выбранных объектов, и их порядок). Получившиеся комбинации называются размещениями из n объектов по k.

То есть в размещениях есть повторения множеств объектов. Например: перемещения из 123 длиной 2 (12 13 21 23 31 32), то есть их 6, а из 3 по 2 = 6

Если в этой задаче множество объектов - это (0, 0, 0, 0, 0, 1, 1, 1, 1, 1) и как его не перестанавливай объекты будут теми же, то почему это не размещения? и почему c из 10 по 5, а не c из 10 по 10 если всего 10 объектов?

0
06.04.2021, 13:16

Не по теме:

gray621, Gdez, никогда не понимал комбинаторику)) Но вы продолжайте - интересно ведь!

0
Эксперт Python
8849 / 4500 / 1864
Регистрация: 27.03.2020
Сообщений: 7,316
06.04.2021, 13:55
gray621,

Не по теме:

чтобы понять смысл:
Представь 10 ящиков. У тебя 5 пронумерованных шаров от 1 до 5. Вопрос - сколькими комбинациями можно разместить эти пять шаров в десять ящиков. Ответ - 10!/(10-5)!.
Теперь рассмотрим положение шаров в ящиках слева направо, игнорируя пустые ящики; или по другому - сколько пятизначных чисел получится. Ответ - 5!
Но в текущей задаче цифры не от 1 до 5, а все(!) единицы. Значит 5! комбинаций исключаются.
Получается 10!/((10-5)!*5!)
Судя по условию - это задача из подготовки к ЕГЭ. Ловушка - в условии упоминаются 0 и 1.
Для "правильного" решения (алгоритма) нужно "отбросить" или 1 или 0; и переформулировать вопрос - сколькими способами можно разместить пять шаров по одному в десяти ящиках; конкретно в задаче - сколько существует двоичных чисел с пятью единицами при максимальной разрядности = 10



Добавлено через 2 минуты
Arsegg,

Не по теме:

кстати, нам практически не преподавали комбинаторику(((. В мое время только в вузах на матфакультетах было

2
06.04.2021, 19:17

Не по теме:

Gdez, теперь понятно, нужно было понять, что единички - это ящики с шариками, а 0 - это пустые ящики

1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.04.2021, 19:17
Помогаю со студенческими работами здесь

Помогите с выводом на печать из 1С !
Доброго времени суток ! такая проблема при формировании расчётных листов,формируется временный файлик с названием tmpprn.txt, так вот, при...

проблемы с выводом чертежа на печать
Пытаюсь вывести свой чертёж на печать, но он печатается не полностью, где то контуры съедены, где то делали не пропечатывается, и таблицу...

Проблема с выводом на печать jTextArea
В jTextArea2 находятся несколько строк текста, есть ли возможность, чтобы при печати текст выводился построчно? Ниже код, который я...

Программа в Delphi с выводом на печать
Помогите написать эту программу file:///E:/1.jpg

Сложности с выводом отчета на печать
Добрый день! Возникает проблема с выводом отчета на печать (см.вложение рис.2). Сам отчет формирует данные правильно (см.вложение...


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru