T-SQL, 216 바이트
나는 지난 몇 밤 동안 알파벳순 ASCII 코드에서 숫자에 대한 올바른 ASCII 코드를 생성하기 위해 올바르게 반올림하는 수학적 시퀀스 함수를 힘들게 만드는 데 꽤 많은 시간을 보냈습니다. 계수에 소수의 소수점 이하 자릿수가 있었지만 효과가있었습니다.
그러나 mattnewport의 합리적인 접근 방식은 훨씬 저렴한 바이트 비용으로 SQL에서도 작동하므로 자신의 수학을 부끄럽게 폐기합니다. 그를 투표하십시오, 그것은 우아한 해결책입니다!
내 꺼야 :
DECLARE @p VARCHAR(MAX)='';WITH t AS(SELECT ASCII(LEFT(@s,1))c,2 i UNION ALL SELECT ASCII(SUBSTRING(@s,i,1)),i+1FROM t WHERE i<=LEN(@s))SELECT @p=@p+CHAR(CASE WHEN c>96THEN 20-c/122+5*c/16 ELSE c END)FROM t;SELECT @p
이것은 재귀 적 CTE를 사용하여 전화 번호의 문자를 즉석에서 스택으로 만들고 문자를 즉시 번역 한 다음 약간의 SQL 속임수 (SELECT @ p = @ p + columnValue)를 사용하여 CTE에서 문자열을 재구성 할 필요가 없습니다. 또 다른 재귀 구조.
산출:
DECLARE @s VARCHAR(MAX)='1-800-abcdefghijklmnopqrstuvwxyz'
--above code runs here
1-800-22233344455566677778889999