Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
for a in range(0, 30):
days = (1 << a)
for b in range(a + 1, 30):
days |= (1 << b)
for c in range(b + 1, 30):
days |= (1 << c)
for d in range(c + 1, 30):
days |= (1 << d)
for e in range(d + 1, 30):
days |= (1 << e)
for f in range(e + 1, 30):
days |= (1 << f)
print('{0:030b}'.format(days))
days ^= (1 << f)
days ^= (1 << e)
days ^= (1 << d)
days ^= (1 << c)
days ^= (1 << b)
import sys
for a in range(1, 31):
days = set()
days.add(a)
for b in range(a + 1, 31):
days.add(b)
for c in range(b + 1, 31):
days.add(c)
for d in range(c + 1, 31):
days.add(d)
for e in range(d + 1, 31):
days.add(e)
for f in range(e + 1, 31):
days.add(f)
for i in range(1, 31):
if i in days:
sys.stdout.write('1')
else:
sys.stdout.write('0')
sys.stdout.write('\n')
days.remove(f)
days.remove(e)
days.remove(d)
days.remove(c)
days.remove(b)
import itertools
for locone in itertools.combinations(xrange(0, 30), 6):
result = [0] * 30
for loc in locone:
result[loc] = 1
print result
import itertools
for days in itertools.combinations(range(31), 6):
print bin(reduce(lambda x, d: x | (1<<d), days, 0))
while True:
print 'Я буду обновлять комментарии перед отправкой'
Сгененерировать равномерный график для всех охранников
Как думаете, что важнее для программиста — изучить математику или научиться читать чужой код и отлаживать программы?
Таких задач намного больше, чем тех, в которых нужно знание математики
Но сомневаюсь, что есть люди, которые бы хотели всю жизнь решать именно такие задачи.
Как вы думаете, что важнее для вас — сердце или печень?
Ваш социотип: логико-интуитивный интроверт — «Робеспьер»
О, исследовательские папиры это вообще пестня отдельная.
И вот таких вот нюансов на самом деле море. Поэтому частенько нельзя взять, реализовать то что есть в папире и чтобы сразу все стало хорошо. Так или иначе нужно проводить свои исследования и составлять свой рецепт под свою задачу основываясь на результатах чужих исследований.
Бумаги без reference implementation я бы вообще не смотрел (хотя довольно часто заказывают написание такой имплементации по какой-нибудь статье). А с ней проверяется достаточно быстро, стоящая вещь ли написана, или отписка для каких-либо конъюктурных целей.
Является ли исследователь, проводящий сотни времени за такими экспериментами, программистом в общеприятом понимании этого слова. Workflow у такого человека, как и требуемые навыки, сильно другие.
Не знаю, может мне так «везло», но большинство бумаг, что я читал, были без реализации которую можно было бы взять, и попробовать сразу, без кодинга.
Программисты они сильно разные, область то очень широкая.
Водитель знать про двигатель внутреннего сгорания должен, но точно не должен его разрабатывать, а предприятие, на котором водитель вынужден настраивать карбюратор, скорее всего, не самое эффективное.
Поэтому если задача не клепать клей между DB и вёбом, и не просто набор ифов (бизнеслогика), то сборник рецептов нужно не только уметь читать и использовать, но и пополнять собственными рецептами, а также видоизменять существующие (понимая к чему это приведет).
В спорах «нужна ли программисту математика» обычно задается вопрос в стиле «ну и зачем мне эти интегралы, если я пишу веб-сайты?»
Теорию графов не читают в курсе мат. анализа. Теорию графов читают в курсах дискретной математики (вещи, очень отвязанной и от математики, и от прикладного программирования) и в курсах алгоритмов.В общем-то, теорию графов могут вообще не изучать, так же как на другой специальности могут не учить численные методы решения уравнений матфизики. Это не делает, кстати, ни тот, ни другой курс отвязанным от математики.
def if6ones(string):
res = 0
for n in string:
if n == '1':
res += 1
if res > 6:
return False
if res == 6:
return True
else:
return False
i = 0
while i < 2**30:
bi = bin(i)
if if6ones(bi):
xx = bi[2:]+'0'*(32-len(bi))
print '(%d)'%len(xx), xx
i += 1
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
public class Test
{
enum Player
{
None = -1,
FirstPlayer = 0,
SecondPlayer = 1
};
public static bool CheckWin(int n, IEnumerable<int> coinSequence)
{
if (coinSequence == null || coinSequence.Count() != 2 * n)
throw new ArgumentException("coinSequence size must be equal 2*n");
var forcePlayer = Player.None;
var currentPlayer = Player.None;
var playerCoins = new int[2] { n, 0 };
var playerMoved = new int[2] { 0, 0 };
var coinsOnDesk = 0;
foreach (var coin in coinSequence)
{
currentPlayer = (Player)(coin == 1 ? 0 : 1);
// force player
{
if (playerMoved[(int)currentPlayer] > n)
{
switch (currentPlayer)
{
case Player.FirstPlayer: forcePlayer = Player.SecondPlayer; break;
case Player.SecondPlayer: forcePlayer = Player.FirstPlayer; break;
default: throw new Exception("Alg fail"); break;
}
}
if (forcePlayer != Player.None)
currentPlayer = forcePlayer;
}
switch (currentPlayer)
{
case Player.FirstPlayer:
if (playerCoins[0] != 0)
{
playerCoins[0]--;
coinsOnDesk++;
}
break;
case Player.SecondPlayer:
if (coinsOnDesk != 0)
{
coinsOnDesk--;
playerCoins[1]++;
}
break;
default: throw new Exception("Alg fail"); break;
}
playerMoved[(int)currentPlayer]++;
}
return (playerCoins[1] == n);
}
public static IEnumerable<IEnumerable<int>> GenerateCoins(int n)
{
if (n == 1)
{
yield return new int[] { 1 };
yield return new int[] { 2 };
yield break;
}
var smallerVariants = GenerateCoins(n - 1);
foreach (var smallerVariant in smallerVariants)
{
yield return smallerVariant.Concat(new int[] { 1 });
yield return smallerVariant.Concat(new int[] { 2 });
}
yield break;
}
public static int CountWinsSequences(int n)
{
return GenerateCoins(2 * n).Count(coinSequence => CheckWin(n, coinSequence));
}
public static void Main()
{
for (int n = 1; n <= 5; n++)
{
Console.WriteLine("n = {0}, wins = {1}", n, CountWinsSequences(n));
}
}
}
Ответ: Да, в частных случаях. В других частных случаях программисту нужна биохимия, экономика и куча других знаний необходимых для конкретного проекта.
Реально достали уже с этим «нужналипрограммистуматематика».
Я всего лишь пытался доказать, что отсутствие знаний заставит вас изобретать велосипед, вместо того, чтобы найти готовый алгоритм или ответ.
но математика является базой для всех наук, по большому счёту.
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils;
procedure f(s: string; k,n: integer);
var i: integer;
begin
if k=0 then begin
write(s);
for i:=1 to n do write('0');
writeln;
end
else if k=n then begin
write(s);
for i:=1 to n do write('1');
writeln;
end
else begin
f(s+'0',k,n-1);
f(s+'1',k-1,n-1);
end;
end;
begin
f('',6,30);
end.
Три задачи для программистов, которым не нужна математика