02.07.2017, 20:54
|
Новичок на форуме
|
|
Регистрация: 02.07.2017
Сообщений: 6
|
|
Суммирование букв алфавита
Разъясните плиз, каким образом каждую букву алфавита прикрепить к условной порядковой цифре, чтобы при вводе в input (html) букв эти условные суммировались и выводились в отдельный div после нажатия кнопки.
Сложно ли это реализовать?
Например Буква А=1 , Б=2, В=3 и тд, но последняя будет 9, дальше нумерация следующих уква начинается по кругу с еденицы. т.е. буква М например будет не 22, а 3
А 1
Б 2
В 3
Г 4
Д 5
Е 6
Ж 7
З 8
И 9
К 1
Л 2
М 3
Н 4
Последний раз редактировалось jamesson, 02.07.2017 в 20:57.
|
|
02.07.2017, 21:41
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,126
|
|
jamesson,
а где Ё?
|
|
02.07.2017, 21:44
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Код символов алфавита идет по порядку. По маске последние три бита и будут давать нужный результат.
|
|
02.07.2017, 21:44
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,126
|
|
jamesson,
без Ё
<!DOCTYPE html>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<style type="text/css">
</style>
<script>
window.addEventListener("DOMContentLoaded", function() {
var form = document.querySelector("form"),
input = form.querySelector("#w"),
result = document.querySelector("#result");
function sum(out, el) {
var num = "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ".indexOf(el.toUpperCase());
num != -1 && (num %= 9)
return out + ++num
}
form.addEventListener("input", function(event) {
var res = input.value.split("").reduce(sum, 0);
result.innerHTML = res
})
});
</script>
</head>
<body>
<form>
<input id="w" value="И" type="text">
<br>
</form>
<div id="result"></div>
</body>
</html>
|
|
02.07.2017, 21:49
|
Профессор
|
|
Регистрация: 08.06.2015
Сообщений: 206
|
|
var b="АБВГДЕЖЗИКЛМНОПРСТУФХЦЧШЩЬЫЬЭЮЯ";
var i=1, k=9, r={};
function num(s){
for(;i<k;i++){
r[s[i]]=i;
if(i==k){
i=1;
num(s.slice(k))
}
}
};
num(b);
alert(r) // результат
Последний раз редактировалось Teamur, 02.07.2017 в 21:57.
|
|
02.07.2017, 22:10
|
Новичок на форуме
|
|
Регистрация: 02.07.2017
Сообщений: 6
|
|
Все ок, но если одно но
Сообщение от рони
|
jamesson,
без Ё
<!DOCTYPE html>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<style type="text/css">
</style>
<script>
window.addEventListener("DOMContentLoaded", function() {
var form = document.querySelector("form"),
input = form.querySelector("#w"),
result = document.querySelector("#result");
function sum(out, el) {
var num = "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ".indexOf(el.toUpperCase());
num != -1 && (num %= 9)
return out + ++num
}
form.addEventListener("input", function(event) {
var res = input.value.split("").reduce(sum, 0);
result.innerHTML = res
})
});
</script>
</head>
<body>
<form>
<input id="w" value="И" type="text">
<br>
</form>
<div id="result"></div>
</body>
</html>
|
А можно ли сумму например 37 разложить на единичные числа и сложить между собой (3+7)=1 , чтобы число 10 получаемое сумировалось тоже, т.е. если итог дует 13, то в сумме выйдет 4
|
|
02.07.2017, 22:37
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,126
|
|
Сообщение от jamesson
|
А можно ли сумму например 37 разложить на единичные числа и сложить между собой (3+7)=1 , чтобы число 10 получаемое сумировалось тоже, т.е. если итог дует 13, то в сумме выйдет 4
|
не осилил
и смотрите прошлый пример
перед строкой 23
добавить
for (; (res += "").length > 1;) res = res.split("").reduce(sum, 0);
это если из 37 сделать 1 , откуда вы остальное взяли одному вам известно
|
|
02.07.2017, 22:45
|
|
Профессор
|
|
Регистрация: 20.12.2009
Сообщений: 1,714
|
|
Сообщение от jamesson
|
А можно ли сумму например 37 разложить на единичные числа и сложить между собой (3+7)=1 , чтобы число 10 получаемое сумировалось тоже, т.е. если итог дует 13, то в сумме выйдет 4
|
Так функция getDigitSum именно это и делает...
https://javascript.ru/forum/misc/695...tml#post457247
|
|
02.07.2017, 22:49
|
Новичок на форуме
|
|
Регистрация: 02.07.2017
Сообщений: 6
|
|
Ошибка, не хочет
Добавил, выдает результат всегда 0
|
|
02.07.2017, 23:02
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,126
|
|
jamesson,
<!DOCTYPE html>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<style type="text/css">
</style>
<script>
window.addEventListener("DOMContentLoaded", function() {
var form = document.querySelector("form"),
input = form.querySelector("#w"),
result = document.querySelector("#result");
function s(out, el) {
return out + +el
}
function sum(out, el) {
var num = "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ".indexOf(el.toUpperCase());
num != -1 && (num %= 9)
return out + ++num
}
form.addEventListener("input", function(event) {
var res = input.value.split("").reduce(sum, 0);
for (; (res += "").length > 1;) {
res = res.split("").reduce(s, 0);
}
result.innerHTML = res
})
});
</script>
</head>
<body>
<form>
<input id="w" value="И" type="text">
<br>
</form>
<div id="result"></div>
</body>
</html>
|
|
|
|