Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Интересное задание codewars.com (https://javascript.ru/forum/misc/73461-interesnoe-zadanie-codewars-com.html)

nerv_ 07.08.2018 12:27

Цитата:

Сообщение от j0hnik
нужно дописать функцию которая переворачивает массив подобно методу reverse().

классика через рекурсию:
function reverse (a, b = []) {
	const [head, ...tail] = a
	return tail.length 
  	? reverse(tail, [head, ...b]) 
    : [head, ...b]
}

alert(reverse([1,2,3,4,5]))

до 19 символов не сокращал, не интересно :)

Dilettante_Pro 07.08.2018 12:43

Цитата:

Сообщение от j0hnik
видимо решение немного другое

Видимо да, но:
1 - a
2 - k
3 - [
4 - ]
- и все.
Чтобы использовать что-то другое, надо выкидывать что-то из этого. Кроме индексных кавычек выбрасывать нечего... А без них ничего не остается.

Alexandroppolus 07.08.2018 13:38

Цитата:

Сообщение от j0hnik
838 это слишком для кодварс, такая городьба

ещё раз ненавязчиво напомню, что результат требуется в виде строки - так и проверить будет проще, а возможно, и решение написать :)

Alexandroppolus 07.08.2018 13:42

Цитата:

Сообщение от nerv_
до 19 символов не сокращал, не интересно

там вся фишка именно в 19 символах, сам по себе reverse ничего особого не представляет, как его не реализуй

Malleys 07.08.2018 13:43

Я выбрал символы !+[], но пока не понятно как вызывать функцию и написать "x", но уже могу определять числа (включая NaN и Infinity), некоторые строки и имитацию круглых скобок...

Dilettante_Pro 07.08.2018 13:54

Вот. 4 символа f(a)
var  a = [];

var f = function(a) { return a.indexOf(a[10]); }
var str = 'f(a)';
alert(new Set(str).size);
var ff = new Function('a','k','return ' + str);

for(var j = 0; j< 100; j++) {
   var i = 10;
   while(i--) {
       a = [0,1,2,3,4,5,6,7,8,9];
       a.sort(_=>Math.random() - 0.5);
       a.push(i); 
   //   console.log(a);
      console.log(ff(a,i), a.indexOf(i)) 
   };
}

Rise 07.08.2018 14:12

Цитата:

Сообщение от Malleys
Я выбрал символы !+[]

На JSFuck похоже.

Malleys 07.08.2018 14:44

Цитата:

Сообщение от Rise
На JSFuck похоже

Там 6 символов

Alexandroppolus 07.08.2018 14:56

мдэ... выяснилась забавная деталь - на V8 моё решение не работает )
проверял зачем-то в ФФ, ИЕ, а вот в хроме не удосужился. Таки да, из-за переполнения стека
Цитата:

Сообщение от Dilettante_Pro
var f = function(a) { return a.indexOf(a[10]).toString(); }
var str = 'f(a)';

никакого a[10], конечно, нет, искомое число в переменной k )
да и работать должно в пустой песочнице, в которую не добавляются свои функции

Белый шум 08.08.2018 00:37

Цитата:

Сообщение от j0hnik
шум, братец, не все так просто для этой каты решающий фактор скорость.

Забыл что там отдельная кнопка для конечной проверки.
Цитата:

Сообщение от j0hnik
лучше шестерки под чаек решать, чем так загоняться

Хоть комменты расставь, а то в этих 1-2-буквенных переменных разобраться сложновато...


Часовой пояс GMT +3, время: 09:33.