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