Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.07.2018, 10:21
Новичок на форуме
Отправить личное сообщение для RCTYBZ Посмотреть профиль Найти все сообщения от RCTYBZ
 
Регистрация: 06.07.2018
Сообщений: 4

помогите понять
не получается цифровые данные из отдельного текстового файла считать в массив в программу и работать с ними

Последний раз редактировалось RCTYBZ, 09.07.2018 в 15:54.
Ответить с цитированием
  #2 (permalink)  
Старый 06.07.2018, 10:29
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,121

Сообщение от RCTYBZ
Понимаю, что нужно считать из файла
<script type="text/javascript" src="m.txt></script>
Так ты ничего не "считаешь из файла"...

Как вариант, сделать ajax-запрос этого файла. А потом

var str='1 2 3 2 3 4 5 1 4 6';
alert(str.split(' '));
Ответить с цитированием
  #3 (permalink)  
Старый 06.07.2018, 10:31
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,719

Сообщение от RCTYBZ
Понимаю, что нужно считать из файла
<script type="text/javascript" src="m.txt></script>
дальше нужно считать и добавить это в массив(с этим уже проблемы)
Из файла нужно считать (производить вычисления) или читать (получать данные)?
Если в файле "m.txt" находится javascript-код, то стоит изменить ему расширение на "js".

Как вы посчитали ответ для вашего примера входящих данных?
Ответить с цитированием
  #4 (permalink)  
Старый 06.07.2018, 10:33
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,121

Сообщение от Nexus
Из файла нужно считать (производить вычисления) или читать (получать данные)?
Сообщение от RCTYBZ
Высота волны и рельеф берега считывается из файла.
В файле данные...
Ответить с цитированием
  #5 (permalink)  
Старый 06.07.2018, 10:35
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,121

Сообщение от Nexus
Как вы посчитали ответ для вашего примера входящих данных?
Исходя из рельефа и высоты волны
Сообщение от RCTYBZ
4
1 2 3 2 3 4 5 1 4 6
Волна дойдет только до
1 2 3 2 3 4...
Но вода останется только в одной луже
1 2 3 2 3 4
И там будет 1 единица воды.

Последний раз редактировалось ksa, 06.07.2018 в 10:47.
Ответить с цитированием
  #6 (permalink)  
Старый 06.07.2018, 10:42
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,719

ksa, спасибо
Ответить с цитированием
  #7 (permalink)  
Старый 06.07.2018, 10:45
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

Ну хоть одна нормальная задача
Ответить с цитированием
  #8 (permalink)  
Старый 06.07.2018, 10:46
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,121

Сообщение от 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);
		}
	});
});
</script>
</head>
<body>
</body>
</html>

Файл tmp1.csp
4
1 2 3 2 3 4 5 1 4 6
Ответить с цитированием
  #9 (permalink)  
Старый 06.07.2018, 11:00
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,005

Сообщение от Rise
Ну хоть одна нормальная задача
с утречка размяться/проснуться - как раз )
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;
}

alert(getCount([1, 2, 3, 2, 3, 4, 5, 1, 4, 6], 4));
alert(getCount([1, 2, 3, 2, 3, 4, 5, 1, 4, 6], 6));
Ответить с цитированием
  #10 (permalink)  
Старый 06.07.2018, 11:04
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,719

Мое решение (можно значительно упростить):
const wave=5;
const relief='1 2 4 2 3 4 5 1 4 6'.split(' ');
const puddles=[];
let puddle=[];

for(let i=0;i<relief.length;i++){
	const prevHeight=!puddle.length?(relief[i-1]||0):puddle[0];
	const height=relief[i];
	
	if(wave<=height)
		break;
	
	if(!puddle && prevHeight<=height)
		continue;
		
	if(prevHeight>height)
		(!puddle.length?(puddle=[prevHeight]):puddle).push(height);
	
	if(puddle[0]<=height){
		puddles.push(puddle);
		puddle=[];
	}
}

const result=puddles.map(puddle=>{
	const max=+puddle.shift();
	
	return puddle.reduce((r,h)=>r+max-h,0);
}).reduce((r,v)=>r+v,0);
alert(result);
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите новичку понять принцип работы функций. 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