ひるあんどんブログ

色々なことに手を出してみるブログ

Right to Left


「何世紀もの間、左利きの人達は右利きの人達のために設計された世界でアンフェアな差別をこうむってきた」
Santrock, John W. (2008). Motor, Sensory, and Perceptual Development.

「ほとんどの人々(70から95%と言われる)は右利きで、少数派(5から35%と言われる)は左利きで、はっきりとしない数の人々はおそらく両利きというのが最もあっている。
Scientific American. www.scientificamerican.com

ロボットのうちの一人は単純なタスクを課せられています。 連続した文字列を一つの文につなげて船を迂回する手順書を作るタスクです。 しかしこのロボットは左利きで、冗談を飛ばし右利きの友人を困惑させる性質があります。

あなたは連続した文字列を与えられます。 あなたはそれらの文字列をカンマで区切られたテキストの塊につなげなければなりません。 右利きのロボットへジョークを飛ばすように、他の単語の一部分であってもすべての"right"の単語を"left"に変えなければいけません。 すべての文字列は小文字で与えられます。

入力 連続した文字列が文字列(unicode)のタプルとして与えられる

出力 テキストを文字列として出力する

left_join*1 == "left,left,left,stop"

left_join*2 == "bleft aleft,ok"

left_join*3 == "bleftness wleft"

left_join*4 == "enough,jokes"


どうやって使われるか これは文字列と配列を使った操作の単純な例です。

事前条件
0 < len(phrases) < 42

def left_join(phrases):
    """
        Join strings and replace "right" to "left"
    """
    text =','.join(phrases)
    
    text = text.replace("right", "left")
        
        
    return text
        
    
        
    

if __name__ == '__main__':
    #These "asserts" using only for self-checking and not necessary for auto-testing
    assert left_join(("left", "right", "left", "stop")) == "left,left,left,stop", "All to left"
    assert left_join(("bright aright", "ok")) == "bleft aleft,ok", "Bright Left"
    assert left_join(("brightness wright",)) == "bleftness wleft", "One phrase"
    assert left_join(("enough", "jokes")) == "enough,jokes", "Nothing to replace"

joinも、replaceも非破壊的なのか。pythonの破壊的なメソッドの一覧がみつからない。Rubyみたく!で書いてくれるとわかりやすいんだけどなぁ。


これは他にあんまり解答ないみたいで、他の人も似たような書き方だった。

*1:"left", "right", "left", "stop"

*2:"bright aright", "ok"

*3:"brightness wright",

*4:"enough", "jokes"