Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 06.07.2018, 11:15
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,230

Сообщение от Alexandroppolus
с утречка размяться/проснуться - как раз )
Алгоритм не правильный...
Контрольный пример
6
1 5 3 2 3 4 5 1 4 6

Вот такой рельеф получается
-
         6
 5    5  6
 5   45 46
 53 345 46
 532345 46
1532345146

Твой алгоритм дает 6 воды, а это не так...
Ответить с цитированием
  #12 (permalink)  
Старый 06.07.2018, 11:16
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,012

Rise,
тут хрен поймешь, как считать потери. Скорее всего, под "волной" подразумевался "прилив", т.е. запас воды неограничен и она не "теряется"
Ответить с цитированием
  #13 (permalink)  
Старый 06.07.2018, 11:18
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,230

Сообщение от Rise
А вы учитываете что по мере продвижения высота волны уменьшается когда попадает в канавы?)
В задаче этим пренебрегают...
Типа море же! Оно огромное, воды валом!
Ответить с цитированием
  #14 (permalink)  
Старый 06.07.2018, 11:18
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,230

Сообщение от Alexandroppolus
запас воды неограничен и она не "теряется"
Именно так.
Ответить с цитированием
  #15 (permalink)  
Старый 06.07.2018, 11:20
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,230

Alexandroppolus, видел критику?
https://javascript.ru/forum/css-html...tml#post489147
Ответить с цитированием
  #16 (permalink)  
Старый 06.07.2018, 11:21
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,012

Сообщение от ksa
Твой алгоритм дает 6 воды
13
http://jsfiddle.net/x85nty6b/
Ответить с цитированием
  #17 (permalink)  
Старый 06.07.2018, 11:24
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,230

Alexandroppolus, извини, это я после вставки не досмотрел программку до конца.
Ответить с цитированием
  #18 (permalink)  
Старый 06.07.2018, 11:26
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,230

RCTYBZ, вот тебе кагбэ полное решение...

<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251' />
<script src='https://code.jquery.com/jquery-latest.js'></script>
<!--
<script src="https://code.angularjs.org/1.3.9/angular.min.js"></script>
<script src="https://code.angularjs.org/1.3.9/angular-route.js"></script>
-->
<style type='text/css'>
</style>
<script type='text/javascript'>
$(function(){
	$.ajax({
		url: "tmp1.csp",
		success: function(Data){
			var h=Data.match(/\d+/g);
			var a=h.slice(1);
			h=h[0];
			alert('Высота волны - '+h);
			alert('Рельеф - '+a);
			h=getCount(a,h);
			alert('Воды - '+h);
		}
	});
	function getCount(array, h) {
	    var max = 0, sum = 0;
	    for (var i = 0; i < array.length; ++i) {
	        var item = array[i];
	        if (item >= h) {
	            break;
	        }
	        sum += Math.max(0, max - item);
	        max = Math.max(max, item);
	    }
	    return sum;
	};
});
</script>
</head>
<body>
</body>
</html>
Ответить с цитированием
  #19 (permalink)  
Старый 06.07.2018, 11:46
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,127


var arr = '1 2 3 2 3 4 5 1 4 6'.match(/\d+/g);
var max = 4;
function pit(arr, max)
{
   var puddle = 0, min;
   for (var i = 0; i < arr.length; i++) {
       if(max <= +arr[i]) break;
       if(min == void 0 && arr[i + 1] <  arr[i]) min = arr[i];
       if(min != void 0 && arr[i] > min) min = void 0;
       if(min != void 0) puddle += min - arr[i];
   }
  return puddle
}

var num = pit(arr, max) ;
alert(num);
Ответить с цитированием
  #20 (permalink)  
Старый 06.07.2018, 12:33
Новичок на форуме
Отправить личное сообщение для RCTYBZ Посмотреть профиль Найти все сообщения от RCTYBZ
 
Регистрация: 06.07.2018
Сообщений: 4

совсем не понятно, как выгрузить информацию из txt
есть отдельный файл текстовый только с цифровым значением - высота волн и углубления, не понятно, как открыть, взять данные, внести их в массив.
Можно попробовать открыть таким способом и вывести данные для наглядности
<!DOCTYPE html> 
<html>
<head>
<title>wave</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<input type="file" id="files" name="file" /> Read file: 
<span class="readButtons">
  <button>show text</button>
</span>
<div id="byte_range"></div>
<div id="byte_content"></div>

<script>
  function read(opt_start, opt_stop) {

    var files = document.getElementById('files').files;
    if (!files.length) {
      alert('file not selected');
      return;
    }

    var file = files[0];
    var start = parseInt(opt_start) || 0;
    var stop = parseInt(opt_stop) || file.size - 1;

    var reader = new FileReader();

    reader.onloadend = function(evt) {
      if (evt.target.readyState == FileReader.DONE) {
        document.getElementById('byte_content').textContent = evt.target.result;
      }    
    };	

    var blob = file.slice(start, stop + 1);
    reader.readAsBinaryString(blob);
  }
  
  document.querySelector('.readButtons').addEventListener('click', function(evt) {
    if (evt.target.tagName.toLowerCase() == 'button') {
      var startByte = evt.target.getAttribute('data-startbyte');
      var endByte = evt.target.getAttribute('data-endbyte');
      read(startByte, endByte); 
    }
  }, false);
      alert(file);
</script>

</head>
</html>
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите новичку понять принцип работы функций. Sonnet Общие вопросы Javascript 3 17.05.2016 12:36
Помогите понять) Garet jQuery 4 08.04.2015 20:59
Народ помогите бьюсь уже неделю не магу понять apercot Javascript под браузер 7 06.11.2014 14:08
помогите понять код с замыканием alexandr_poskrobka Общие вопросы Javascript 4 04.10.2012 21:44
Анимация. Помогите понять почему не работает. kadurban jQuery 4 08.07.2010 20:50