Сообщество Хекслета

Andy 28 декабря 2016 →

В тесте под видео

ответ в остатке от деления! 12%N(количество элементов) ->>

должно быть (количество бакетов).

 

По тестам:

Какая сложность добавления, удаления и обновления элемента (лучшая, средняя, худшая) для реализации Map на базе двумерного массива?

Судя по видео, для добавления сложность отличается от удаления и обновления.

Александр Фарион 28 декабря 2016 →

const nod = (n, a, b) => { let q = n; let r = 0; while (q > 0) { if (q % a === 0 || q % b === 0) { r = r + q; console.log(r); q--; } else q--; } return r; }

nod (10, 2, 4)

clear Native Browser JavaScript

10 18 24 28 30 => 30

так а почему решением есть 20, если числа которые деляться на 2 или 4 в суме равны 30. Т.е. 2+4+6+8+10. Извините, если что-то неправильно понял.

Артем Шустов 28 декабря 2016 →

(
 (typeName1, (functionName1, functionBody1)),
 (typeName1, (functionName2, functionBody2)),
 (typeName3, (functionName3, functionBody3)),
)

подскажите getName это functionName? а SimpleCard это typeName? getMethod находит соответствие в табличке и достает functionBody(contents(self))? Я правильно понял?

(
 (SimpleCard, (getName, functionBody1)),
 (SimpleCard, (damage, functionBody2)),
 (PercentCard, (getName, functionBody3)),
 (PercentCard, (damage, functionBody4)),
)

Наша табличка выглядит так?

Artyom Svinin 28 декабря 2016 →

Добрый день! Мог бы кто-то более детально обьяснить (если говорить прямо, то обьяснить), что означают указанные записи:

1)

`[${toString(startSegment(segment))}, ${toString(endSegment(segment))}]`;

2)

export const makeSegment = (point1, point2) => 
  cons (point1, point2);

Во втором интересует почему без фигурных скобок, без ничего используется запись (потому как если с фигурными использовать ,то тест не проходит) ?

Vyacheslav Mukhin 28 декабря 2016 →

// BEGIN (write your solution here)
export default (m, n) => {
  let divisor = 1;
  if (m !== 0 || n !== 0) {
    if (m === 0) {
      return n;
    }
    if (n === 0) {
      return m;
    }
    if (m >= n) {
      divisor = n;
    } else {
      divisor = m;
    }
    while (divisor !== 1) {
      if (m % divisor === 0 && n % divisor === 0) {
        return divisor;
      }
      divisor -= 1;
    }
  }
  return divisor;
};
// END

Как-то сложновато вышло

Радислав Ялилов 28 декабря 2016 →

То чувство, когда твое решение совпадает с решением учителя

Artyom Svinin 28 декабря 2016 →

Здравствуйте!

Тема для меня оказалась очень сложной, решил, что лучше пересмотрю заново, сделал все задание, а так как есть решение - решил сравнить с решением учителя, вроде все сошлось но тест не проходит, могли бы Вы подсказать почему ? Код:

// BEGIN (write your solution here)
export const quadrant = (point) => {
  const a = getX(point);
  const b = getY(point);

  if ( a > 0 && b > 0) {
    return 1;
  } 

  else if ( a < 0 && b > 0) {
    return 2;
  }

  else if (a < 0 && b < 0) {
    return 3;
  }

  else if (a > 0 && b < 0) {
    return 4;
  }
};
// END

// BEGIN (write your solution here)
export const symmetricalPoint = (point) => {
  makePoint(-getX(point), -getY(point));
};
// END

// BEGIN (write your solution here)
export const distance = (point1, point2) => {
  const a = getX(point2) - getX(point1);
  const b = getY(point2) - getY(point1);
  return Math.sqrt(Math.pow(a, 2) + Math.pow(b, 2));
};
// END

Ошибка:

make: Entering directory `/usr/src/app'
babel-node --presets=es2015 test.js
/usr/local/lib/node_modules/hexlet-points/node_modules/hexlet-pairs/dist/index.js:66
    throw new Error('Argument must be pair, but it was \'' + String(pair) + '\'');
    ^

Error: Argument must be pair, but it was 'undefined'
    at Object.toString (/usr/local/lib/node_modules/hexlet-points/node_modules/hexlet-pairs/dist/index.js:66:11)
    at toString (/usr/local/lib/node_modules/hexlet-points/dist/index.js:24:16)
    at Object.<anonymous> (test.js:18:14)
    at Module._compile (module.js:413:34)
    at loader (/usr/local/lib/node_modules/babel-register/lib/node.js:126:5)
    at Object.require.extensions.(anonymous function) [as .js] (/usr/local/lib/node_modules/babel-register/lib/node.js:136:7)
    at Module.load (module.js:357:32)
    at Function.Module._load (module.js:314:12)
    at Function.Module.runMain (module.js:447:10)
    at /usr/local/lib/node_modules/babel-cli/lib/_babel-node.js:161:27
make: *** [test] Error 1
make: Leaving directory `/usr/src/app'
Run failed! Check and fix errors above!

Nourepide 28 декабря 2016 →

Так в общем долго я делал всё через IDE в итоге там всё работает, тут нет. Могу предположить что не обновляются переменные, других предположений нет. Вероятно опытный глаз найдет где я ошибся

Перед этим немного объясню мои методы и как они работают

checkCombo(); - Получает три String значения, если они одинаковые то возвращает true , в ином случае false

checkVertical(); , checkHorizontal(); , checkDiagonal(); - Проверяют ячейки массива по вертикали/горизонтали/диагонали с помощью метода checkCombo(); , если получают от него true то прерывает дальнейшую проверку и возвращают первое значение текущий проверенной строки, в ином случае возвращают null

В стандартном методе getWinner(); идёт поочерёдная проверка вышеописанных методов, в случае если один из них не вернул null то возвращается полученное значение (X или O). В случае получение трех null подряд возвращается null

А теперь сам код, сильно не бейте, я старался (Это не точно)

public class WinnerController {

     public String getWinner(final Field field) {
        // BEGIN (write your solution here)
        if (checkHorizontal(field) != null) { return checkHorizontal(field); }
        else if (checkVertical(field) != null) { return checkVertical(field); }
        else if (checkDiagonal(field) != null) { return checkDiagonal(field); }
        else { return null; }
        // END
    }

    public String checkVertical(final Field field) {
        String result = null;
        for (int i = 0; i != field.getSize(); ++i) {
            if (checkCombo(field.figures[0][i], field.figures[1][i], field.figures[2][i])) {
                result = field.figures[0][i];
                break;
            }
        }
        return result;
    }

    public String checkHorizontal(final Field field) {
        String result = null;
        for (int i = 0; i != field.getSize(); ++i) {
            if (checkCombo(field.figures[i][0], field.figures[i][1], field.figures[i][2])) {
                result = field.figures[i][0];
                break;
            }
        }
        return result;
    }

    public String checkDiagonal(final Field field) {
        if (checkCombo(field.figures[0][0], field.figures[1][1], field.figures[2][2])) { return field.figures[0][0]; }
        else if (checkCombo(field.figures[0][2], field.figures[1][1], field.figures[2][0])) { return field.figures[0][2]; }
        else { return null; }
    }

    public boolean checkCombo(String value1, String value2, String value3) {
        if (value1 == value2 && value2 == value3) {
            return true; } else {
            return false; }
    }

}

Dmitrii Pashutskii 27 декабря 2016 →

Какой то затык с решением как мне видится мой iter должен рекурсивно вызываться в reduce и добавлять элементы в acc, после чего reduce выдать acc но почему то он проходит по элементам заходит внутрь первого списка добавляет его элементы и все, не могу никак разобраться куда копать.

Второй тест:

AssertionError: '(1, 2, 3, 5)' == '(1, 2, 3, 5, 4, 3, 2)'
      + expected - actual

      -(1, 2, 3, 5)
      +(1, 2, 3, 5, 4, 3, 2)

Сам код:

// removed

Andy 27 декабря 2016 →

Интересует метод из LinkedList:

public boolean remove(Object o) {
  if (o == null) {
      for (Node<E> x = first; x != null; x = x.next) {
          if (x.item == null) {
              unlink(x);
              return true;
          }
      }
  } else {
      for (Node<E> x = first; x != null; x = x.next) {
          if (o.equals(x.item)) {
              unlink(x);
              return true;
          }
      }
  }
  return false;
}

Откуда там проблемы с null возникают? Почему бы не оставить только нижнюю ветку (else):


public boolean remove(Object o) {
  for (Node<E> x = first; x != null; x = x.next) {
      if (o.equals(x.item)) {
          unlink(x);
          return true;
      }
  }
  return false;
}

Допустим, у null нет equals, но ведь тогда можно заменить o.equals(x.item) на x.item.equals(o)?