За два часа эт круто. Скока строчек получилось (assuming no COBOL style implementation)?3DD wrote: ↑17 Feb 2021 20:28 Еще coding assignment: calculator with roman numbers.
Input (string): "(XV+MCD)*III-IV*(V-I)"
Output: decimal number
(Operators: +,-,*,/)
Take home task, 2 hours
Что в моей имплементации (JS) было:
1. Validate input (if only roman letters and operators, no decimals or other chars)
2. Validate if brackets are balanced, no situations like: (V+III*X
3. Create converter for romans-to-decimals
4. Break string into numbers and operators
5. Convert roman numbers into decimals using converter at step 3
6. Execute eval(..)
Step 6 could be implemented as fully custom calculator:
1. extract bracket contents, do operation inside them (recursion for nested brackets)
2. execute * and / operations
3. execute the remaining operations
А как бы вы решали и за какое время?
Coding assignment
-
- Уже с Приветом
- Posts: 5665
- Joined: 15 Aug 2008 00:52
Re: Coding assignment
I would hope that a wise white man with the richness of his experiences would more often than not reach a better conclusion than a latina female who hasn't lived that life
-
- Уже с Приветом
- Posts: 920
- Joined: 22 Jun 2007 20:41
- Location: Santa Rosita
Re: Coding assignment
Насколько строго надо validate input? Надо ли на числа типа "XXXX" и "IXIX" ругаться, что not valid number или можно конвертировать в 40 и 18 соответственно?3DD wrote: ↑17 Feb 2021 20:28 Еще coding assignment: calculator with roman numbers.
Input (string): "(XV+MCD)*III-IV*(V-I)"
Output: decimal number
(Operators: +,-,*,/)
Take home task, 2 hours
Что в моей имплементации (JS) было:
1. Validate input (if only roman letters and operators, no decimals or other chars)
...
3. Create converter for romans-to-decimals
...
-
- Уже с Приветом
- Posts: 7872
- Joined: 05 Aug 2003 21:39
- Location: CA
Re: Coding assignment
До такой степени валидировать не надо. Предполагается что они in valid format.Big W wrote: ↑18 Feb 2021 01:26Насколько строго надо validate input? Надо ли на числа типа "XXXX" и "IXIX" ругаться, что not valid number или можно конвертировать в 40 и 18 соответственно?3DD wrote: ↑17 Feb 2021 20:28 Еще coding assignment: calculator with roman numbers.
Input (string): "(XV+MCD)*III-IV*(V-I)"
Output: decimal number
(Operators: +,-,*,/)
Take home task, 2 hours
Что в моей имплементации (JS) было:
1. Validate input (if only roman letters and operators, no decimals or other chars)
...
3. Create converter for romans-to-decimals
...
Следующего куска кода достаточно (да, в случае "XXXX" и "IXIX" это будет 40 и 18)
Code: Select all
function roman_converter_to_int(str) {
if(str === null) return -1;
let numRes = utilMapping(str.charAt(0));
let pre = 0;
let currChar = 0;
for(let i = 1; i < str.length; i++){
currChar = utilMapping(str.charAt(i));console.log()
pre = utilMapping(str.charAt(i-1));
if(currChar <= pre){
numRes += currChar;
} else {
numRes = numRes - pre*2 + currChar;
}
}
return numRes;
}
/* Validate string if braсkets (if any) are balanced */
function ifInputValid(str) {
if(!str || str ==='') {
return false;
}
const arr = str.split("");
let stack = [];
arr.forEach((value, key)=>{
switch(value) {
case "(":
stack.push(value);
break;
case ")":
if(stack.length>0 && stack[stack.length-1]==="(") {
stack.pop();
} else {
stack.push(value);
}
break;
default:
break;
}
});
if(stack.length>0) {
return false;
}
return true;
}
/* [UTIL] Mapping: roman numers with decimals */
function utilMapping (char) {
let res = "";
switch(char.toLowerCase()) {
case 'i':
res = 1;
break;
case 'v':
res = 5;
break;
case 'x':
res = 10;
break;
case 'l':
res = 50;
break;
case 'c':
res = 100;
break;
case 'd':
res = 500;
break;
case 'm':
res = 1000;
break;
default:
res = -1;
break;
}
return res;
}
console.log(roman_converter_to_int("ixix"))
-
- Уже с Приветом
- Posts: 545
- Joined: 07 Jan 2016 13:04
Re: Coding assignment
примерно 45 минут на жабе:
Code: Select all
import javax.script.ScriptEngineManager;
import javax.script.ScriptEngine;
import javax.script.ScriptException;
import java.util.regex.MatchResult;
import java.util.regex.Pattern;
public class Calculator {
private static final ScriptEngine engine = new ScriptEngineManager().getEngineByName("JavaScript");
public Object calculate(String input) throws ScriptException {
String normalized = Pattern
.compile("[IVXLCDM]+")
.matcher(input)
.replaceAll(this::normalize);
return engine.eval(normalized);
}
private String normalize(MatchResult matchResult) {
String value = matchResult.group();
int number = romanToInt(value);
return String.valueOf(number);
}
int romanToInt(String input) {
char[] arr = input.toCharArray();
int sum = toArabic(arr[0]);
for (int i = 1; i < arr.length; i++) {
if (arr[i] > arr[i - 1])
sum += toArabic(arr[i]) - 2 * toArabic(arr[i - 1]);
else
sum += toArabic(arr[i]);
}
return sum;
}
int toArabic(char latter) {
switch (latter) {
case 'I':
return 1;
case 'V':
return 5;
case 'X':
return 10;
case 'L':
return 50;
case 'C':
return 100;
case 'D':
return 500;
case 'M':
return 1000;
default:
throw new IllegalArgumentException("WTF: " + letter);
}
}
}
-
- Уже с Приветом
- Posts: 12119
- Joined: 15 Feb 2010 10:32
- Location: Pacifica, CA
Re: Coding assignment
Надо же, совместили 2 литкод задачи в одну. На литкоде есть задачи на конвертацию в и из римских чисел, и так же калькулятор. Задачи это не сложные, но очень муторные обе, в калькуляторе можно стэк использовать, т к у умножения и деления приоритет.
-
- Уже с Приветом
- Posts: 7872
- Joined: 05 Aug 2003 21:39
- Location: CA
Re: Coding assignment
45 минут - отлично! Походу eval - это типа у интервьюирующих был вроде brute force solution.tessob wrote: ↑18 Feb 2021 05:50 примерно 45 минут на жабе:Code: Select all
... return engine.eval(normalized);
Основной интерес представляла имплементация самого калькулятора.
Krys-Krys правильно отметила, что это 2 задачи в одном задании
-
- Уже с Приветом
- Posts: 545
- Joined: 07 Jan 2016 13:04
Re: Coding assignment
А компилятор тоже свой нужен? ))
-
- Уже с Приветом
- Posts: 7872
- Joined: 05 Aug 2003 21:39
- Location: CA
-
- Уже с Приветом
- Posts: 539
- Joined: 24 Mar 2004 07:31
- Location: Krasnoyrsk -> -> Chicago
Re: Coding assignment
Вопрос - указать на ошибки в описании, это хорошо, или плохо?
> (Operators: +,-,*,/)
в условии задачи операторы скобочек не указаны, может их игнорировать надо?
> (Operators: +,-,*,/)
в условии задачи операторы скобочек не указаны, может их игнорировать надо?
моя родина СССР!
-
- Уже с Приветом
- Posts: 12119
- Joined: 15 Feb 2010 10:32
- Location: Pacifica, CA
Re: Coding assignment
Для калькулятора если числа десятичные и +- можно складывать в стэк по мере парсинга строки и чтения числа или знака. Когда след число готово - проверять что на пике стэка, если умножение или деление - то из стэка снимать 2 топовых элемента (число и операцию), выполнять эту операцию над числом из стэка и текущим числом и результат класть назад. Если не умрожение или деление - просто класть в стэк. Под конец в стэке будут числа и +- операции, пройтись по нему и вот результат. Из ньюансов - числа могут быть как меньше 10, так и больше, а это значит что нужно считывать эти числа правильно, например можно сделать 2 поинтера, главные для строки и 2й что считает текущее число, а когда считает - главный принтер сдвигать в позицию следующую за ним (или конец строки), при желание такой калькулятор можно успеть написать за 20 мин. Более сложная версия этой задачи (и более муторная) - это когда еще и скобочки есть. Вообще это классическая задача на стэк. Есть очень много похожих известных задач, например проверить насколько валидна строка с разными видами открвающихся и закрывающихся скобок, а если не валидна - выкинуть лишние символы, более сложная версия это вернуть все возможные вариации валидной строки с выкинутыми скобочками.
-
- Уже с Приветом
- Posts: 7872
- Joined: 05 Aug 2003 21:39
- Location: CA
Re: Coding assignment
просто оставлю это здесь, если кому надо:
Code: Select all
/**
Initialize a stack S.
Process each bracket of the expression one at a time.
If we encounter an opening bracket, we simply push it onto the stack.
This means we will process it later, let us simply move onto the sub-expression ahead.
If we encounter a closing bracket, then we check the element on top of the stack.
If the element at the top of the stack is an opening bracket of the same type,
then we pop it off the stack and continue processing. Else, this implies an invalid expression.
In the end, if we are left with a stack still having elements, then this implies an invalid expression.
*/
function isValid(s) {
if (s.length % 2 !== 0) return false
let stack = []
let matches = {
"}": "{",
"]": "[",
")": "(",
};
for (let i = 0; i < s.length; i++) {
if (typeof stack[stack.length - 1] != 'undefined' &&
stack[stack.length - 1] == matches[s.charAt(i)]) {
stack.pop();
} else {
stack.push(s.charAt(i))
}
}
return stack.length == 0;
};
console.log(isValid('{}[{}]'));
-
- Уже с Приветом
- Posts: 12119
- Joined: 15 Feb 2010 10:32
- Location: Pacifica, CA
Re: Coding assignment
Если это во время интервью просят написать то можно там же и спросить у собеседующего про скобочки и проч. Если прислали по емейлу - можно выслать список вопросов перед тем как писать решение.Vladimir Kr. wrote: ↑18 Feb 2021 19:46 Вопрос - указать на ошибки в описании, это хорошо, или плохо?
> (Operators: +,-,*,/)
в условии задачи операторы скобочек не указаны, может их игнорировать надо?
-
- Уже с Приветом
- Posts: 7872
- Joined: 05 Aug 2003 21:39
- Location: CA
Re: Coding assignment
В моем случае - это линк на codepad и там кратко условия задачи. Задавать вопросы не кому. И счетчик по времени: 120 минут, время пошло.Krys-Krys wrote: ↑18 Feb 2021 20:39Если это во время интервью просят написать то можно там же и спросить у собеседующего про скобочки и проч. Если прислали по емейлу - можно выслать список вопросов перед тем как писать решение.Vladimir Kr. wrote: ↑18 Feb 2021 19:46 Вопрос - указать на ошибки в описании, это хорошо, или плохо?
> (Operators: +,-,*,/)
в условии задачи операторы скобочек не указаны, может их игнорировать надо?
Last edited by 3DD on 18 Feb 2021 20:41, edited 1 time in total.
-
- Уже с Приветом
- Posts: 12119
- Joined: 15 Feb 2010 10:32
- Location: Pacifica, CA
Re: Coding assignment
Тогда можно предположить что скобочек не будет, раз про них не упоминается в условие.3DD wrote: ↑18 Feb 2021 20:40В моем случае - это линк на codepad и там кратко условия задачи. И счетчик по времени: 120 минут, время пошло.Krys-Krys wrote: ↑18 Feb 2021 20:39Если это во время интервью просят написать то можно там же и спросить у собеседующего про скобочки и проч. Если прислали по емейлу - можно выслать список вопросов перед тем как писать решение.Vladimir Kr. wrote: ↑18 Feb 2021 19:46 Вопрос - указать на ошибки в описании, это хорошо, или плохо?
> (Operators: +,-,*,/)
в условии задачи операторы скобочек не указаны, может их игнорировать надо?
-
- Уже с Приветом
- Posts: 7872
- Joined: 05 Aug 2003 21:39
- Location: CA
Re: Coding assignment
Было про скобки вскользь. Типа input может быть и таким: (V+I)*IIIKrys-Krys wrote: ↑18 Feb 2021 20:41Тогда можно предположить что скобочек не будет, раз про них не упоминается в условие.3DD wrote: ↑18 Feb 2021 20:40В моем случае - это линк на codepad и там кратко условия задачи. И счетчик по времени: 120 минут, время пошло.Krys-Krys wrote: ↑18 Feb 2021 20:39Если это во время интервью просят написать то можно там же и спросить у собеседующего про скобочки и проч. Если прислали по емейлу - можно выслать список вопросов перед тем как писать решение.Vladimir Kr. wrote: ↑18 Feb 2021 19:46 Вопрос - указать на ошибки в описании, это хорошо, или плохо?
> (Operators: +,-,*,/)
в условии задачи операторы скобочек не указаны, может их игнорировать надо?
Про то, что скобки могут быть невалидными в описании не было. Уточнить не у кого. Можно предположить и так и эдак.
-
- Уже с Приветом
- Posts: 658
- Joined: 27 Feb 2013 10:51
- Location: SFBA
Re: Coding assignment
Получается, что и операторы тоже надо было проверять на предмет креатива вроде ***** ---- //// /|\
По такой логике можно было сразу реализовывать стек калькулятора
и отлавливать, что на вход за числом приходит неожиданно открывающая скобка 13(, или за оператором другой оператор ** или закрывающая скобка +), или несбалансированная скобка, или стек остаётся не пустым, то сами решаете, что делать (exception, null, etc)
а вообще с валидацией это даже три задачи, потому что обычно оговаривают что ввод корректный, а сбалансированные скобки дают как отдельное задание
муторненько всё это вместе.
-
- Новичок
- Posts: 85
- Joined: 17 Mar 2021 20:49
Re: Coding assignment
Кодинг assignment знак плохого работодателя. Лучве сразу разворачиваться. Они оплачивают потраченное время?
Надо счета им присылать за это. Особенно интересно когда они уже знают какого идуса наймут но для проформы ставят эти задачки.
Надо счета им присылать за это. Особенно интересно когда они уже знают какого идуса наймут но для проформы ставят эти задачки.
-
- Уже с Приветом
- Posts: 19041
- Joined: 11 Jan 2012 09:25
- Location: CA
Re: Coding assignment
Не скажите. Все очень зависит от менеджера и команды. Ну и собственно где вы сами находитесь в плане карьеры, компенсации и проч по отношению к перспективной компании и должности. Я на текущем месте сделала такой coding assignment , помню что тоже в глубине души «ворчала» что нафига мне надо в выходной стока кодировать. Но в итоге менеджеру понравилось, позвали , там все прошла и получила офер. Если сравнивать ТС до этой работы и сейчас, почти в два раза. Так что очень даже стоило.
https://www.youtube.com/watch?v=wOwblaKmyVw
-
- Новичок
- Posts: 85
- Joined: 17 Mar 2021 20:49
Re: Coding assignment
Конечно есть какие то случаи когда стоит. Я имею в виду в среднем. Особенно если у человека есть какой то портфолио кода онлайн/на гитхабе, эти их кодинг задачки считаю издевательством. Они не доверяют людям.. у меня нет оснований доверять им. Пусть оплачивают врема кодинга по рыночной цене.Сабина wrote: ↑22 Mar 2021 14:34Не скажите. Все очень зависит от менеджера и команды. Ну и собственно где вы сами находитесь в плане карьеры, компенсации и проч по отношению к перспективной компании и должности. Я на текущем месте сделала такой coding assignment , помню что тоже в глубине души «ворчала» что нафига мне надо в выходной стока кодировать. Но в итоге менеджеру понравилось, позвали , там все прошла и получила офер. Если сравнивать ТС до этой работы и сейчас, почти в два раза. Так что очень даже стоило.
-
- Уже с Приветом
- Posts: 19041
- Joined: 11 Jan 2012 09:25
- Location: CA
Re: Coding assignment
Тут ещё есть такой момент что иногда хотят понять какие то конкретные coding skills, а на вашем гитхаб нет.
Меня так раз попросили на JavaRx сделать assignment. Тоже кстати вылилось в oнсайт и офер, но я не взяла.
По мне такое лучше, чем overrated leetcode etc
Меня так раз попросили на JavaRx сделать assignment. Тоже кстати вылилось в oнсайт и офер, но я не взяла.
По мне такое лучше, чем overrated leetcode etc
https://www.youtube.com/watch?v=wOwblaKmyVw
-
- Уже с Приветом
- Posts: 4185
- Joined: 27 Apr 2011 03:43
- Location: Сергели ->Chicago
Re: Coding assignment
Вы, товарищ, либо в америке недавно, либо вы не в америке вообще.niche wrote: ↑22 Mar 2021 14:42 Конечно есть какие то случаи когда стоит. Я имею в виду в среднем. Особенно если у человека есть какой то портфолио кода онлайн/на гитхабе, эти их кодинг задачки считаю издевательством. Они не доверяют людям.. у меня нет оснований доверять им. Пусть оплачивают врема кодинга по рыночной цене.
Кодинг задачки тут стали стандартом, хотим мы этого или нет. Я лично сам это не одобряю, но против системы не попрешь.
Никакого отношения к тому что говорите вы это не имеет. В большинстве случаев отбор честный и справедливый.
Не исключаю, что могут быть какие нибудь единичные рога и копыта, где все это часть ширмы. Но я лично с таким ни разу не сталкивался.
В чужом гитхаб коде тоже мало кто хочет ковыряться и тратить свое время. Если только ваш проект не на слуху у широких масс.
-
- Новичок
- Posts: 85
- Joined: 17 Mar 2021 20:49
Re: Coding assignment
Ну на гитхаб то все не поставишь. Что то ведь пропраетори, свое или из прошлой компании... На всех кода не напасешься: если им нужно какая то узкая технология пусть срашивают по телефону, смотрят в резюме, ну или пусть дают время на изучение. Если им нужен узкий спец и нет времени на обучение, то дожно быть понятно из резюме/разговора есть ли опыт. Кодинг задачки однако в основном общие, школьного типа - решение которых легко можно купить, кстати, так что они ничего не доказывают - и если они не доверяют людям до такой степени то у меня вопрос хочу ли иметь дело с такой атмосферой. К сожалению в этой профессии параноидальное недоверие со стороны компаний это норма (но при этом всегда успешно нанимаются самые тупейшие индусы), у меня не было положительного опыта с такими компаниями, хотя и довелось проходить их задачки (больше не буду связываться)
-
- Новичок
- Posts: 85
- Joined: 17 Mar 2021 20:49
Re: Coding assignment
Думаю подольше вашего, десятки лет. А родители мои и того дольше. Вы еще наверно в памперсах ходили.valchkou wrote: ↑22 Mar 2021 15:31Вы, товарищ, либо в америке недавно, либо вы не в америке вообще.niche wrote: ↑22 Mar 2021 14:42 Конечно есть какие то случаи когда стоит. Я имею в виду в среднем. Особенно если у человека есть какой то портфолио кода онлайн/на гитхабе, эти их кодинг задачки считаю издевательством. Они не доверяют людям.. у меня нет оснований доверять им. Пусть оплачивают врема кодинга по рыночной цене.
Кодинг задачки тут стали стандартом, хотим мы этого или нет. Я лично сам это не одобряю, но против системы не попрешь.
Никакого отношения к тому что говорите вы это не имеет. В большинстве случаев отбор честный и справедливый.
Не исключаю, что могут быть какие нибудь единичные рога и копыта, где все это часть ширмы. Но я лично с таким ни разу не сталкивался.
В чужом гитхаб коде тоже мало кто хочет ковыряться и тратить свое время. Если только ваш проект не на слуху у широких масс.
Представьте у меня даже образование по профилю местное.
Кодинг задачки не являются никаким стандартом от слова совсем. И если кто то пытается их проталкивать то этому надо активно сопротивляться.
Отбор честный...вот повеселили, то то индюки заменют всех в компаниях потихоньку.
Мне товарищ доводилось нанимать людей в большой достаточно известой компании в силиконовой долине, и знаю какой отбор честный, сказок этих не надо про серого бычка.
Шлют индюков своих, из них и выбирай. А другие задачку не сделали.
Им в гитхабе нет времени ковыраться? А у меня нет времени заниматься их бредовыми задачками (которые как правило не будут иметь никакого отношения к реальной работе). Нормальные компании их не требуют.
-
- Уже с Приветом
- Posts: 4185
- Joined: 27 Apr 2011 03:43
- Location: Сергели ->Chicago
Re: Coding assignment
остается вам посочувствовать. Про памперсы лучше не нужно, это больная тема для меняniche wrote: ↑22 Mar 2021 15:37Думаю подольше вашего, десятки лет. А родители мои и того дольше. Вы еще наверно в памперсах ходили.valchkou wrote: ↑22 Mar 2021 15:31Вы, товарищ, либо в америке недавно, либо вы не в америке вообще.niche wrote: ↑22 Mar 2021 14:42 Конечно есть какие то случаи когда стоит. Я имею в виду в среднем. Особенно если у человека есть какой то портфолио кода онлайн/на гитхабе, эти их кодинг задачки считаю издевательством. Они не доверяют людям.. у меня нет оснований доверять им. Пусть оплачивают врема кодинга по рыночной цене.
Кодинг задачки тут стали стандартом, хотим мы этого или нет. Я лично сам это не одобряю, но против системы не попрешь.
Никакого отношения к тому что говорите вы это не имеет. В большинстве случаев отбор честный и справедливый.
Не исключаю, что могут быть какие нибудь единичные рога и копыта, где все это часть ширмы. Но я лично с таким ни разу не сталкивался.
В чужом гитхаб коде тоже мало кто хочет ковыряться и тратить свое время. Если только ваш проект не на слуху у широких масс.
Представьте у меня даже образование по профилю местное.
Кодинг задачки не являются никаким стандартом от слова совсем. И если кто то пытается их проталкивать то этому надо активно сопротивляться.
Отбор честный...вот повеселили, то то индюки заменют всех в компаниях потихоньку.
Мне товарищ доводилось нанимать людей в большой достаточно известой компании в силиконовой долине, и знаю какой отбор честный, сказок этих не надо про серого бычка.
Шлют индюков своих, из них и выбирай. А другие задачку не сделали.
Им в гитхабе нет времени ковыраться? А у меня нет времени заниматься их бредовыми задачками (которые как правило не будут иметь никакого отношения к реальной работе). Нормальные компании их не требуют.
Я то подумал это вас не берут, а оказывается это вы не берете. А задачки кто выдумывает вендор-посредник? или вы сами?
Вы можете увидеть код кандидатов?
-
- Уже с Приветом
- Posts: 19041
- Joined: 11 Jan 2012 09:25
- Location: CA
Re: Coding assignment
В книге Gayle есть прохожая задача
https://www.youtube.com/watch?v=wOwblaKmyVw