All streams
Search
Write a publication
Pull to refresh
-30
Ivan Gavryushin @dcc0read⁠-⁠only

Пользователь

Send message
Расти будет, насколько стремительно — сказать не берусь.
Беглый взгляд на ситуацию в IT в мире ( количество программ ) подсказывает, что требование к предоставлению исходных кодов во время покупки ПО может стать государственной, а может быть, и международной нормой и обязанностью.
Вдобавок, патенты, как известно, не распространяются на принципы и алгоритмы.
Выпуск закрытого ПО можно трактовать, как попытку монополизировать ту или иную сферу.

Т.е. если смотреть через призму текущих международных законов и даже негласных норм и тенденций, то именно открытое ПО им больше соответствует.
Тогда как — Микрософт — монополист, вдобавок эксплуатирующей множество алгоритмов и наработок, созданных совершенно другими людьми. К Микрософт есть просто вопросы, касающиеся этики. Причем целый ряд. Один из них касается монополии на эксплуатацию человеческих инстинктов (игровых). А это вообще тоталитаризм и психологическая тирания. В принципе Микрософт — это продукт 90-х.
Вдумайтесь, бинарнику 13 лет, а он по прежнему работоспособен и успешно интегрируется с операционной системой.
Что в этом особенного? У меня под 7-кой и игры 2001 года запускаются. Почему должно быть иначе! Но есть вопрос: какова вероятность при использовании старого софта получить серьёзный сбой в системе?

Лично мне приятней видеть Linux на смартфоне, на маршрутизаторе, на сервере лучше тоже или Linux, или BSD. Да, под Windows действительно много программ, особенно творческие хороши, когда как, например, видеомонтаж в Linux пока сильно затруднён.
В Windows не так удобно работать с командной строкой. Из коробки нет такого мощного инструментария для администрирования, автоматизации. Программы для Windows в своем большинстве предоставляются без исходных кодов, а обратное уже скоро может стать стандартом, так как практически для любой коммерческой программы есть аналог с открытым кодом, к тому же устраняющий ряд юридических проблем — вопросы лицензий. Проприетарный зарубежный софт в новых мировых условиях может быть просто вытеснен по военно-политическим причинам из государственных организаций, а за ними потянется и бизнес, волей-неволей… так как «касса одна».

Выживаемость Windows сильно зависит от количества игр, сделанных под систему.

А десктопный Linux действительно не для всех.
Лучше разделять понятия «математика» и «вычисления» (в смысле решение каких-то примеров).
  • Однозначно. Стоит. Любое описание, которое хотя бы на йоту будет делать алгоритм доступным для понимания — имеет полное право быть.
  • Не имеет значения, были ли алгоритмы опубликованы ранее, в скольких учебниках напечатаны и т.д. Алгоритмы — частичка вечности. И писать о них можно вечно.
  • Желательно давать разжёванное описание с примером. По шагам.
  • Также, если есть возможность, желательно делать визуализацию в виде анимации, можно gif
Это ж Олимпиада, а там, я так понимаю, время ограничено. Поэтому все верно, какие средства пришли в голову в тот момент автору те и использовал.
Прибор характеризуется интервалом обнаружения

Жесть… Какой чудак писал это условие?
В принципе можно сократить все до такого, убрав все splice внутри и убрав in_array, но очевидность относительно бумажного варианта немного теряется:
Заголовок
Код
 <?php
$a=array(1,2,3,4,5);
$k=3;
$n=5;
$c=array_splice($a, $k);
$b=array_splice($a, 0, $k);
$j=$k-1;
print_r($b);
 
        while (1) {
	   
       		$m=array_search($b[$j]+1,$c);
       	     if ($m!==false) {
	     	$c[$m]-=1; 
        	$b[$j]=$b[$j]+1;
               	print_r($b);	       
        }

       	if ($b[$k-1]==$n) {
	 $i=$k-1; 
	 while ($i >= 0) {

	 	if ($i == 0 && !in_array($b[$i]+1, $c)) break 2;
		
       		  $m=array_search($b[$i]+1,$c);
		  if ($m!==false) { 
		  	  $c[$m]=$c[$m]-1; 
			  $b[$i]=$b[$i]+1;
			
		 
			$g=$i;
		while ($g != $k-1) {
			array_unshift ($c, $b[$g+1]);
			$b[$g+1]=$b[$g]+1;
			$g++;
			}
			$c=array_diff($c,$b);
			print_r($b);
		 	     break;  
       			 }
	 	$i--;
	
		}
	
	}
	
             
}

?>


Фактически можно не делить, а только печатать до К-элемента и хранить все в одном массиве, что с одной стороны сокращает код и приближает алгоритм к каноническим реализациям, с другой стороны хотелось закодировать ровно так, как это было выведено на бумаге.
Для чего? Для более четкого осознания все процесса. Просто, как я уже написал, сокращённый вариант может быть не таким очевидным. Но сокращение несколько иная задач, в конце можно просто придти к такому: на Си
Второй вариант
Её спасли, но пока писали план спасения, она состарилась.
Все-таки это не совсем эвристика, так как начальное и, может быть, терминальное состояние могут закономерно выбиваться из общего алгоритма, но описать ведь их надо.
И от К и от N вдобавок, я если меняется значения K и N, то надо не забыть поменять и массив А
Потому что «array_splice() удаляет length элементов, расположенных на растоянии offset от начала массива ...».
Т.е. в начале берется столько элементов, сколько указано в K
А дальше, поскольку массив начинается с 1, а индексы считаются с 0, то
j=k-1
— )
Если Вы про начальную рабивку, то
$c=array_splice($a, $k);
$b=array_splice($a, 0, $k);
print_r($c);
print_r($b);


Array
(
[0] => 6
[1] => 7
)
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5

Если про то, речь о том, что индексы считаются с 0го, то в коде определено
j=k-1
Мой первый опыт общения с CSS был именно как на картинке. Но тогда я еще даже учебник не прочитал, только справочник немного, а так, делал по аналогии — открывал какой-нибудь сайт в режиме просмотра кода и грязно заимствовал: )

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity

Specialization

Редактор
From 80,000 ₽