健康)状况
回文是从头到尾读起来相同的单词、短语或字符序列(例如“rotor”或“madam”)。您需要编写一个程序来确定是否可以通过重新排列给定字符串的字符将其制成回文。
输入数据
a
由拉丁字母表中的字母(从到)组成的字符串z
。
输出
'YES'
如果可以重新排列字符形成回文,则打印该字符串,'NO'
否则打印该字符串。
测试用例
Вход: "aab"
Выход: "YES" (можно сделать "aba")
Вход: "abc"
Выход: "NO"
Вход: "racecar"
Выход: "YES" (это уже палиндром)
Вход: "aaa"
Выход: "YES"
评价标准
任何编程语言。
比赛将以符号(空格和连字符也是符号)最短的解决方案获胜。
获胜者的答案将被标记为正确。在选择获胜者时不会使用提问者的答案。
比赛期 - 7 天,2023 年 10 月 10 日莫斯科时间 8:00 结束
聚苯乙烯
请在响应头中注明语言以及以逗号分隔的程序字符数。
排行榜(结果表格代码取自此处)
execute("ru.stackoverflow.com", "1543735");
.cssload-container,.cssload-cube{width:97px;height:97px;transform-style:preserve-3d}.cssload-container,.cssload-cube,.cssload-half1,.cssload-half2{transform-style:preserve-3d}.cssload-container{position:relative;margin:23px 84px;perspective:292px}.cssload-cube{animation:cube 11.5s forwards infinite;transform-origin:center 49px}.cssload-half1,.cssload-s1{top:0;transform-origin:50% 100%}.cssload-half1{height:39px;position:absolute;animation:half-fold 11.5s forwards infinite}.cssload-side{width:19px;height:19px;background:#ddd;position:absolute}.cssload-s1{left:39px;animation:s1ani 11.5s forwards infinite}.cssload-s2,.cssload-s3,.cssload-s4{left:39px;transform-origin:50% 0}.cssload-s2{top:19px;animation:s2ani 11.5s forwards infinite}.cssload-s3{top:39px;animation:s3ani 11.5s forwards infinite}.cssload-s4{top:58px;animation:s4ani 11.5s forwards infinite}.cssload-s5{left:19px;top:19px;transform-origin:100% 50%;animation:s5ani 11.5s forwards infinite}.cssload-s6{left:58px;top:39px;transform-origin:0 50%;animation:s6ani 11.5s forwards infinite}@keyframes cube{0%,30%{transform:rotateX(0)}40%{transform:rotateX(45deg) rotateY(0) rotate(45deg)}60%{transform:rotateX(60deg) rotateY(0) rotate(45deg)}65%,70%{transform:rotateX(60deg) rotate(45deg) rotate(180deg)}75%,80%{transform:rotateX(60deg) rotate(45deg) rotate(1turn)}90%{transform:rotateX(0) rotate(0) rotate(0)}}@keyframes s1ani{0%{opacity:1;transform:translateY(0);background:#ddd}40%{transform:rotateX(0);background:#ddd}50%{transform:rotateX(-90deg);background:#ddd}90%{transform:rotateX(-90deg)}}@keyframes s2ani{0%{opacity:0;transform:rotateX(-179deg)}10%{opacity:1;transform:rotateX(0)}40%{background:#ddd}45%,80%{background:#b4b4b4}65%{opacity:1;background:#b4b4b4}90%{opacity:1}to{opacity:0}}@keyframes s3ani{0%,10%{opacity:0;transform:rotateX(-179deg)}20%,90%{opacity:1;transform:rotateX(0)}40%{background:#ddd}45%{background:#969696}to{opacity:0}}@keyframes s4ani{0%,20%{opacity:0;transform:rotateX(-179deg)}10%,to{opacity:0}30%{opacity:1;transform:rotateX(0)}40%{transform:rotateX(0);background:#ddd}50%{transform:rotateX(90deg);background:#b4b4b4}80%{background:#b4b4b4}90%{opacity:1;transform:rotateX(90deg)}}@keyframes s5ani{0%,10%{opacity:0;transform:rotateY(-179deg)}20%{opacity:1;background:#ddd;transform:rotateY(0)}40%{transform:rotateY(0)}50%{transform:rotateY(90deg)}55%{background:#ddd}60%{background:#c8c8c8}90%{transform:rotateY(90deg);opacity:1}to{opacity:0}}@keyframes s6ani{0%,20%{opacity:0;transform:rotateY(179deg)}30%{opacity:1;transform:rotateY(0)}40%{transform:rotateY(0)}50%{transform:rotateY(-90deg);background:#ddd}60%,80%{background:#c8c8c8}90%{opacity:1;transform:rotateY(-90deg)}to{opacity:0}}@keyframes half-fold{0%,50%{transform:rotateX(0)}60%,90%{transform:rotateX(-90deg)}}
<script src="https://mayorovp.github.io/codegolf/table-8c505e68f1349e4c69e7.js"></script>
<div class=cssload-container><div class=cssload-cube><div class=cssload-half1><div class="cssload-side cssload-s1"></div><div class="cssload-side cssload-s2"></div><div class="cssload-side cssload-s5"></div></div><div class=cssload-half2><div class="cssload-side cssload-s3"></div><div class="cssload-side cssload-s4"></div><div class="cssload-side cssload-s6"></div></div></div></div>
结果及获奖者公布:
首先,我对本次比赛所有参赛者的拼搏精神和创造力表示深深的感谢!所提出的解决方案引起了人们的喜悦和钦佩。
特别感谢@Zontik参与审核和编辑答案。
第一名: @Stanislav Volodarskiy,Ruby,56 个字符!
第二名: @Chetaya 四,Python,57 个字符!
感谢大家的参与!
蟒蛇,60
整型变量
b
存储字符数的奇偶校验。例如,'a'
奇偶校验存储在第 97 位和'z'
第 120 位中。最后,它检查是否
b
只设置了一位。该表达式b & (b - 1)
删除数字的最低有效位。如果数字变为零,则该位是唯一的。常量
'YES'
和'NO'
混合在一行中。第一个位于偶数位置,第二个位于奇数位置。红宝石,56 岁
整型变量
b
存储字符数的奇偶校验。例如,'a'
奇偶校验存储在第 97 位和'z'
第 120 位中。Начальное значение 1024 нужно так как
gets
возвращает строку с переводом строки. Переводу строки соответствует десятый бит (1024). Он выставлен заранее, перевод строки в конце строки его снимает.В конце проверяется что в
b
установлен только один бит. Выражениеb & (b - 1)
стирает младший бит числа. Если число обнулилось, этот бит был единственным.Python, 57
Думал много дней, наконец додумался) Работает так же, как и многие (с проверкой количества одинаковых символов в строке на чётность)
Подробный разбор кода:
Первой строчкой мы создаём множество
a
Идём по всем символам строки:
Если символ есть в множестве
a
, удаляем его оттуда, а если нет - добавляемПечатаем
YES
если количество элементов в множестве меньше или равно 1, иначе печатаемNO
Труднее всего понять последнюю строчку. Объясняю. Если длина массива равна 1, то есть два варианта:
Оба этих варианта нам подходят, печатаем
YES
. А если в строке 0 символов - все были парными, то есть это тоже нам подходят, также печатаемYES
.P.S. СПАСИБО ОГРОМНОЕ ЗА СОКРАЩЕНИЕ КОДА @StanislavVolodarskiy. Этот код рулит среди питоновских только благодаря ему:)
C,66
这是一个完整的程序,
gcc temp.c
已转换为功能可执行模块。编译时,发出六个警告,但没有错误。下面是相同的代码,但不那么密集。
整型变量
b
存储字符数的奇偶校验。例如,'a'
奇偶校验存储在零位和'z'
第二十五位中。最后,它检查是否
b
只设置了一位。该表达式b & (b - 1)
删除数字的最低有效位。如果数字变为零,则该位是唯一的。蟒蛇,63
算法 - 计算不配对字符的数量
JavaScript, 73
JUST FOR FUN
Решаем задачу на регулярках :)
Считаю не совсем честным, что другие ответы на JS не содержат promt и console.log, поэтому прилагаю тоже вариант просто функции-обёртки. 73 символа
Изи, просто делаем скучную замену, 82 символа
Монорегулярка, это уже веселее, но 103 символа
Большое регулярное выражение, ищет символы, вошедшие нечётное количество раз:
C#, 70
Ввод передается аргументом запуска
蟒蛇,170
蟒蛇,92
解决方案与
Counter
!UPD:如果需要,这里有一个 replit 链接:https://replit.com/@nikola-chistov/myfisrtcodegolf#main.py
UPD2:感谢@Acinit提供的缩短技巧。
哈斯克尔,62
蛮力:我们组成所有排列并检查它们之间是否存在回文:
https://ideone.com/nV67QU
哈斯克尔,66 岁
一个稍长的版本,但没有暴力,来自邻近答案的想法:
https://ideone.com/YeNNSO