Как минимумом операций заполнить или лучше сразу объявить массив ц.чисел от X до Y?
Здрасьте!
У меня тут в одной из задач "какой-то кастрированный урезанный JS". Большинства методов нету, объекта Array нету, даже инкремента/декремента нету. Дополнительная фишка в том что "оно" как-то типа считает вызовы операторов и если превышен лимит - тупо отменяет выполнение. А мне "там" надо воплотить и использовать массив целых чисел, заполненный подряд по возрастанию начиная от заданного числа и до конца массива (тоже заданное число).
Да и вообще от циклов хотелось бы избавиться. Может кто знает совсем тайные секретные фишки? Спасибо! |
Цитата:
var startValue = 400, index = 5; var currValue = startValue + index; alert(currValue); |
Цитата:
var start = 400 - 1, arrayLength = 10, max = start + arrayLength, result = []; while (start <= max) result.push(start += 1); alert(result); |
заполнение массива es6
Svorg,
function createArray(length, initItem, increment = 1 ) { return Array.from({length}, (_,index) => initItem + increment * index) } alert(JSON.stringify(createArray(10, 400), null, 0)); |
мои 5 копеек )
<script> createArray = (from, count) => { return Array(count).fill().map((_, i) => from + i) } console.log(createArray(400, 10)) </script> |
рони,
Там походу нет constructor и соответственно нет его статических методов. |
Если нет методов то пора подключать полифилл ) https://github.com/es-shims/es5-shim
|
Невозможно что-либо подключать. Обходиться тем что имеется. А имеется мало.
Кстати объявлять функции тоже нельзя))) Цитата:
Цитата:
Цитата:
Цитата:
|
Svorg,
Вот так должно сработать var arr = [], x = 400-1; for (var i = 0; i<10; i+=1) arr[i] = x+=1; |
<script> var arr = [] for (var i = 0; i < 10; i++) arr[i] = 400 + i console.log(arr) </script> |
SuperZen,
он говорил инкремента нет |
j0hnik, ыыы... :haha:
<script> var arr = [] for (var i = 0; i < 10; i = i + 1) arr[i] = 400 + i console.log(arr) </script> |
Цитата:
"+=" или "-=" не понимает, "++" или "--" не понимает... Даже "A[i]=x;" тоже не работает (non-variable in assignment) - могу делать только "A.push(x);"... Ну, допустим, пока как-то так: Цитата:
Цитата:
|
было бы проще если бы ТС написал среду выполнения этого шлака )
|
Svorg,
Выбросить i, работать только с x - все поменьше операций |
Вроде как упростим:
Цитата:
Цитата:
|
попробуй сделать несколько while'ов ) пачучуть
|
А вот так ещё каплю выжалось:
var A=[],Curr=400-1,Len=768,Max=Curr+Len; while(Curr<Max){ A.push(Curr=Curr+1); }; return A;А вот 769 опять не тянет. |
Ладно, видимо всё же "никак"...
|
Svorg,
ты там не каты случаем решаешь на codewars ? |
Цитата:
Ладно, говорю, если нету кардинального способа не сожрущего операции, то придётся заходить вообще с совершенно другого угла... |
мне кажется ты нас троллишь )
|
Цитата:
площадка на которой множество задач, для некоторых как раз есть ограничения использования методов, скорости, кол-во символов. |
сгенерируй строку типа
var arr = [400, и т.д. сколько нужно] потом скопипасти ее ) и запусти... |
j0hnik, Подобным "спортом" не занимаюся, у меня тут реальных но долбанутых задач хватает))
SuperZen, гм... Если бы не ограничение сервера на длину POST запросов - могло бы даже подойти... |
а что с несколькими вайлами?
|
Svorg, чайник программируете?)
Что за среда исполнения такая? |
Да какая разница, оно видимо считает "операции" относительно всего скрипта.
Чёрный ящик. Отправляете строку с кодом через POST запрос на сервер и тот выполняет. Или ругается. Названия не указано, просто "код в формате похожем на JavaSсript/ActionScript", и мол пользоваться можно тем-то и тем-то, всё. Кажется подобрал другую функцию, которая понимает "начало + количество". Выдаёт правда не те данные, но сейчас вот пытаюсь их скрестить... Всем спасибо за участие! |
А если так, растягивая?
var A=[],Curr=400-1,Len=768,Max=Curr+Len; while(Curr<Max){ Curr=Curr+A.push(Curr, Curr+1, Curr+2, Curr+3, Curr+4, Curr+5); }; return A; |
Часовой пояс GMT +3, время: 09:13. |