「利用者:Kirari1192」の版間の差分
ナビゲーションに移動
検索に移動
恒心教リッピング路線 プログラミング講座: 2022/10/30 一文字ごとに繰り返す
>Kirari1192 (名義追加) |
>Kirari1192 (恒心教リッピング路線 プログラミング講座: 2022/10/30 一文字ごとに繰り返す) |
||
82行目: | 82行目: | ||
archiveiya74codqgiixo33q62qlrqtkgmcitqx5u2oeqnmn5bpcbiyd.onion | archiveiya74codqgiixo33q62qlrqtkgmcitqx5u2oeqnmn5bpcbiyd.onion | ||
twitter3e4tixl4xyajtrzo62zg5vztmjuricljdp2c5kshju4avyoid.onion | twitter3e4tixl4xyajtrzo62zg5vztmjuricljdp2c5kshju4avyoid.onion | ||
== 恒心教リッピング路線 プログラミング講座 == | |||
当職らの集団の使っていたAmazonアカウントが姪になったので新しいクレカが届くまでの間暇だからという理由でここで駄文を並べるナリ<br> | |||
なぜこんなことをやるのかというと恒心教リッピング路線であることを伏せて必要に応じてOSS貢献もしているからですを<br> | |||
なおこれは不定期の模様 | |||
プログラミングの基本をある程度把握していることを前提とするナリ<br> | |||
難しくはならないように頑張りますを<br> | |||
OSS担当が扱える言語の関係上言語はPythonとKotlinになりますを | |||
バリュケーを含めここ以外では書いていないので注意して欲しいナリ<br> | |||
ここ以外で見かけたらそれは荒らしナリよ 処遇については各管理人で決めてほしいですを | |||
唐澤貴洋Wikiとの出会いに感謝 | |||
=== 2022/10/30 一文字ごとに繰り返す === | |||
[[神聖六文字|唐澤貴洋殺す]]は恒心教徒なら誰でも知っているだろうと思うナリ その日何か悪いことが起これば唐澤貴洋に怒りをぶつけることで皆が皆に優しい世界を祈る、これはいい。 | |||
さて、普通であれば神聖六文字を複数回唱える時は単純に「唐澤貴洋殺す唐澤貴洋殺す唐澤貴洋殺す...」とするナリが、ここでは少し捻って「唐唐唐唐唐澤澤澤澤澤貴貴貴貴貴洋洋洋洋洋殺殺殺殺殺すすすすす」のように一文字づつ繰り返すことを考えてみるナリ | |||
とは言え単純にこうしても最初に示したような繰り返しになるナリ | |||
(Python) | |||
>>> '唐澤貴洋殺す'*5 | |||
'唐澤貴洋殺す唐澤貴洋殺す唐澤貴洋殺す唐澤貴洋殺す唐澤貴洋殺す' | |||
(Kotlin) | |||
>>> "唐澤貴洋殺す".repeat(5) | |||
res2: kotlin.String = 唐澤貴洋殺す唐澤貴洋殺す唐澤貴洋殺す唐澤貴洋殺す唐澤貴洋殺す | |||
そこで、今何しようとしているのかを噛み砕いて考えてみるナリよ | |||
* 文字列を文字ごとに分解したい (唐, 澤, 貴, 洋, 殺, す) | |||
* 分解した文字を繰り返す (唐唐, 澤澤, 貴貴, 洋洋, 殺殺, すす) | |||
* 結合する (唐唐澤澤貴貴洋洋殺殺すす) | |||
この過程は非常に重要ですを<br>これによって何をどうするかという検討ができるナリ | |||
初めに「文字列を文字ごとに分解したい」という点について考えてみるナリ<br> | |||
これについては、ここで扱う言語では文字列は「イテレーター」として扱われており難しいことを考える必要はないですを | |||
<div class="toccolours mw-collapsible mw-collapsed"> | |||
「イテレーター」について解説 | |||
<div class="mw-collapsible-content"> | |||
配列や文字列のような何かの並びを表すオブジェクトにおいて、その並びを最初から最後まで一個づつ取り出していく(反復する)概念/オブジェクトのことを指しますを<br> | |||
取り出される各項目は要素と言われるナリ<br> | |||
これで何が出来るかと言うと例えば数列の合計を計算したりある一定の条件に合う項目を流れ作業で数えることも出来るナリ | |||
</div></div> | |||
これによって1文字ごとに取り出すことができるので、各要素を繰り返しにすれば「分解した文字を繰り返す」ことが出来るナリ<br> | |||
以下の例では5回繰り返す場合を示しますを | |||
(Python) | |||
>>> [x*5 for x in '唐澤貴洋殺す'] | |||
['唐唐唐唐唐', '澤澤澤澤澤', '貴貴貴貴貴', '洋洋洋洋洋', '殺殺殺殺殺', 'すすすすす'] | |||
(Kotlin) | |||
>>> "唐澤貴洋殺す".map({a->a.toString().repeat(5)}) | |||
res5: kotlin.collections.List<kotlin.String> = [唐唐唐唐唐, 澤澤澤澤澤, 貴貴貴貴貴, 洋洋洋洋洋, 殺殺殺殺殺, すすすすす] | |||
Pythonでは文字列から一文字取り出しても「長さ一文字の文字列」という扱いなのに対し、KotlinやJavaでは「文字」(Char)型に変わるナリ<br> | |||
このため、Kotlinでは「長さ一文字の文字列」に変換するために<code>.toString()</code>を入れていますを<br> | |||
Pythonでは文字列に対して掛け算をすることでその数値の分だけ繰り返しさせることができますを<br> | |||
Kotlinでは文字列型に<code>repeat()</code>という関数があるのでこれを使う [[それはできるよね。]] | |||
最後は各文字列が入った配列を結合するナリ<br> | |||
両方に結合する関数が存在するものの、呼び出しの主従関係が違うので気をつけるナリよ<ref>OSS担当より: Pythonの呼び出し方は少数派らしい。Kotlinのように配列やリストに対して呼び出して文字列を指定する書き方のほうが多数派とか</ref><br> | |||
こういった結合系の関数では要素同士の間に何を入れるか指定できるナリが、ここでは[[唐澤貴洋|空]][[空は何色か|文字]]列にするナリ | |||
(Python) | |||
>>> <nowiki>''.join(x*5 for x in '唐澤貴洋殺す')</nowiki> | |||
'唐唐唐唐唐澤澤澤澤澤貴貴貴貴貴洋洋洋洋洋殺殺殺殺殺すすすすす' | |||
(Kotlin) | |||
>>> "唐澤貴洋殺す".map({a->a.toString().repeat(5)}).joinToString("") | |||
res6: kotlin.String = 唐唐唐唐唐澤澤澤澤澤貴貴貴貴貴洋洋洋洋洋殺殺殺殺殺すすすすす | |||
こうして目的は達成できたナリよ 唐唐唐唐唐澤澤澤澤澤貴貴貴貴貴洋洋洋洋洋殺殺殺殺殺すすすすす | |||
<div class="toccolours mw-collapsible mw-collapsed"> | |||
発展編: 縦書きカラコロ | |||
<div class="mw-collapsible-content"> | |||
要素同士の間に改行を入れるようにすると縦向きのカラコロを出力できるナリ | |||
(Python) | |||
>>> print('\n'.join(x*5 for x in '唐澤貴洋殺す')) | |||
唐唐唐唐唐 | |||
澤澤澤澤澤 | |||
貴貴貴貴貴 | |||
洋洋洋洋洋 | |||
殺殺殺殺殺 | |||
すすすすす | |||
(Kotlin) | |||
>>> "唐澤貴洋殺す".map({a->a.toString().repeat(5)}).joinToString("\n") | |||
res7: kotlin.String = 唐唐唐唐唐 | |||
澤澤澤澤澤 | |||
貴貴貴貴貴 | |||
洋洋洋洋洋 | |||
殺殺殺殺殺 | |||
すすすすす | |||
これはいい。唐澤貴洋短冊にして殺す | |||
</div></div> | |||
== 脚注 == | |||
<references /> |