Страницы

Поиск по вопросам

среда, 5 декабря 2018 г.

Составить формулу на языке программирования

Не могу придумать как составить формулу, если A = 10, B = 25, C = 15, а R=40. Нужно узнать сколько есть вариантов составить набор из элементов A,B,C ,чтобы сумма их была именно равна R. В Данном случае 40. То есть на этом примере ответом будет 3 т.к.
A+A+A+A = R C+C+A = R B+C = R
А как это все записать формулу, чтобы программа считала сумму возможных вариантов?


Ответ

Можно также решить рекурсией, но без полного перебора.
Наши исходные A = 10, B = 25, C = 15, а R=40 можно представить в виде линейного уравнения
Ax+By+Cz=R
Теперь нам нужно найти все возможные варианты коэффициентов x,y,z доступные нам в данном случае. Сделать это можно получив целое от деления R на А и потом инкрементно получаем все возможные x, сохраняем. Повоторяем это для B и С. После уже запускаем в рекурсии ищем возможные варианты.
Думаю если изучить методы решения систем линейных алгебраических уравнений можно найти что то лучше.
r = 40; a = [10,25,15]; b = []; //находим коэффициенты a.forEach(function(e,indx){ i = parseInt(r/e); b[indx] = []; while(i>=0){ b[indx][b[indx].length]=i--; } }); out = []; //ищем решения function recursion(i,sum=0,_sum=""){ b[i].forEach(function(e, indx){ sm=a[i]*e+sum; tmp = e>0?((_sum!=""?_sum+"+":"")+"("+a[i]+"*"+e+")"):_sum; if(sm==r){ out[out.length]=tmp; } else if( sm

Разделить строку на слова и вывести их на печать по одному

Как сделать программу, используя функцию. Вводишь строку из несколько слов с пробелами. Находишь все слова и выводишь все слова отдельными строчками. Что я делаю не так?
str1 = str(input()) i = 0 k = 0 list = []
def space(str1): return(str1) while k <= len(str1): if str1(i) != " ": list.append(str(i)) return(list) i += 1 k += 1
mini_list = space(str1) print(mini_list)


Ответ

Находишь все слова
Зря вы перебираете строку посимвольно в поисках пробелов.
Во-первых, бывают и другие пробельные символы, например, неразрывный пробел или табуляция. Они тоже разделяют строку на слова. Во-вторых, для деления строки на слова в Python 3 есть метод str.split(). Он разбивает строку по заданному разделителю, а если не указывать разделитель (т.е. по умолчанию) — по пробельным символам (конкретно: space, tab, newline, return, formfeed). Возвращает список строк, на которые поделил исходную.
Вот так:
words = input().split()
Заметьте, что str(input()) не нужно, input() и так возвращает строку.
Чтобы вывести каждое слово, достаточно перебрать список и каждое напечатать.
for word in words: print(word)
Оба действия можно объединить для лаконичности:
for word in input().split(): print(word)

Отрисовать спираль на сайте

Интересует какими лучше способами нарисовать (анимировать само рисование спирали) спираль Ферма на сайте? (Чтобы пользователь видел как она рисуется) Можно ли её сделать на чистом css? А если я хочу анимировать её с помощью математической функции это только в js? P.S. Прошу не давать готовых решений, а направить какими средствами её можно реализовать.


Ответ

Спираль - это не html-элемент, поэтому и средства css для ее рисования (в смысле - анимированного создания из ничего) в чистом виде здесь применить не получится.
Я вижу три варианта:
Один из вариантов уже описали здесь - представить что спираль это картинка, или див с картинкой в фоне и не меняя размер фона увеличить див - фон постепенно появится полностью, типа "отрисовался", ага )) Второй вариант - это положить эту спираль картинкой svg - это уже логичнее, всё таки это по сути векторный элемент, у которого внутри линия. И сделать постепенную прорисовку линии например при помощи vivus.js JS-рисование при помощи канвас.
Вот как-то так, выбирай )

Расширение и сужение типов

Допутим у меня есть иреархия классов. Во главе иерархии стоит класс А, за ним B, C и тд. Наследуются друг от друга. Уместно ли будет делать такое? A obj = new B(); //(Расширение) B obj = new A(); //(Сужение)


Ответ

Нельзя наследнику присвоить предка. Только если Вы предку (указателю на объект-предок) заранее присвоили указатель на объект-потомок, то обратное присваивание выполнять можно.
UPD
class A { ... }
class B extends A { ... }
... B b = new B(); A a = b; // можно B c = (B) a; // можно
A a1 = new A(); B b1 = a1; // нельзя

Есть ли способ перевернуть текст на css?

мне кажется что для этого использовать js лишнее
var container = document.querySelector("article p"); var arr = container.innerHTML.split(/\s+/); var str = ''; for (var i = 0; i < arr.length; i++) { if (arr[i]) { arr[i] = '' + arr[i] + ''; } } container.innerHTML = arr.join(' '); * { margin: 0; padding: 0; } article { display: inline-block; padding: 10px 20px; border: 1px solid red; transform: rotate(0deg); margin-left: 300px; } article span { display: block; color: red; font-size: 18px; text-transform: uppercase; font-family: 'Lobster', cursive; }

t e x t - r o t a t i o n



Ответ

Можно попробовать что-то такое:
article { display: inline-block; padding: 10px 20px; border: 1px solid red; margin-left: 300px; color: red; font-size: 18px; text-transform: uppercase; font-family: 'Lobster', cursive; width: .75em; }

t e x t - r o t a t i o n

или такое
article { display: inline-block; padding: 10px 20px; border: 1px solid red; margin-left: 300px; color: red; font-size: 18px; text-transform: uppercase; font-family: 'Lobster', cursive; width: .75em; word-break: break-word; word-wrap: break-word; }
text-rotation

Длина строки в чистом C

У меня есть такой прототип функции: int len(const char *string);. Как мне ее реализовать ? Я ведь знаю только адрес первого символа. Могу ли я как-то узнать сколько их всего ?


Ответ

Можете, но только если вызывающий совершенно точно даёт вам именно строку
В Си всякая строка является массивом символов. Но не всякий массив символов можно считать строкой.
На уровне системы типов Си не различает их вовсе. Всё держится на уговоре, что в конце указанной (началом) области памяти точно есть нуль-символ, в противном случае считать её строкой не следует, и работать с ней даже стандартными функциями для строк опасно.
О сишных строках известно, что:
Символы в них идут в памяти подряд по возрастанию указателей. Первый встреченный символ с кодом 0 (нуль-символ) — конец строки. Каждый символ содержится в одном char'е. Это здорово ограничивает множество совместимых кодировок (из известных русскоязычных на ПК: Windows-1251, CP866, KOI8-r), но для учебных задач это часто предполагают. Если строка окажется, например, в UTF-8, функция не упадёт (т. к. нуль там такой же), но результат может дать неверный (если ожидается число символов).
Считать ли завершающий ноль как занимающий длину... есть аргументы в обе стороны.
С одной стороны, этот нуль-символ не входит в "полезную нагрузку" строки, это чисто служебный элемент. Общепринято, так считает strlen С другой, нуль-символ занимает место и его существование нужно учитывать при выделении пространства для хранения.

Как сделать длинный пробел?

Я пробовал вот это  , но это - не длинный, что мне делать?


Ответ

Это Html. Первый способ     Второй способ Text