同じ文字を繰り返した文字列を生成したい

同じ文字がn個並んだ文字列を生成したいです。 Pythonにおける
a = "a"*10
print(a)
#結果: aaaaaaaaaa
a = "a"*10
print(a)
#結果: aaaaaaaaaa
みたいに簡潔に記述できたら神です。 質問としては, ・上の例と同じことができる構文があるか ・構文がなければスマート(?)に生成するにはどうすればいいか です。 環境: Skript 2.5.3
13 Replies
gladiolus8789
gladiolus8789OP9mo ago
やり方自体は
function repeat_letter(str: string, n: integer) :: string:
loop {_n} times:
add {_str} to {_result::*}

set {_result} to concat {_result::*} by ""
return {_result}
function repeat_letter(str: string, n: integer) :: string:
loop {_n} times:
add {_str} to {_result::*}

set {_result} to concat {_result::*} by ""
return {_result}
というので考えてはいます。 ただ何となく汚い気がするので簡潔に記述できたら気持ちええなあと思い質問させていただきました。
yukkina
yukkina9mo ago
set (_a) to "a" loop 10 times: set (_a) to "(_a)a" みたいなクソ文しか思いつかんかった strを計算する方法は無いと思うねんな これの方が綺麗や
gladiolus8789
gladiolus8789OP9mo ago
あと、自分が調べた限りでは https://skripthub.net/docs/?id=10165 これがあったんですが Skript +2.8.0のため使用不可でした
Skript Hub - Documentation
Repeat String (Expression) - Skript
Repeats inputted strings a given amount of times.
月猫ch(月雲)
add A to LIST は処理が遅いので やめたほうがいいかもしれません 1例(というかうちのやり方)なんですけど
set {_} to ""
loop {_n} times:
set {_} to "%{_}%%{_str}%
return {_}
set {_} to ""
loop {_n} times:
set {_} to "%{_}%%{_str}%
return {_}
とかやってます つまりyukkinaニキとおなじ え、見た目がきしょい?ごめん
gladiolus8789
gladiolus8789OP9mo ago
たしかに無理に配列使う必要ないですね このくらいであれば見た目の良さよりも軽い方が好ましいですから、そのやり方にします お二方とも、ありがとうございます。 Skript変なところで不便なので頭おかしくなりますよ!
yukkina
yukkina9mo ago
strを計算式に入れ込めるpyも少し特殊な言語だと思うけどな
DarkestCat
DarkestCat9mo ago
それはそう
月猫ch(月雲)
逆にpyのstr計算はどういう内部処理なんだ……
Unknown User
Unknown User9mo ago
Message Not Public
Sign In & Join Server To View
月猫ch(月雲)
⬆天才だろこれ
tanoKun
tanoKun9mo ago
最近の言語は、コンパイラが最適化することも多いからね
Kurumi1011
Kurumi10119mo ago
計算時間ここまで探求するのえぐい C言語やんけ‼️
tanoKun
tanoKun9mo ago
javaの場合、単純な string結合は stringbuilderになる

Did you find this page helpful?