python; checkio日記

checkioを中心にpythonプログラミングの記録

2017-01-01から1年間の記事一覧

Electric Station 問題 Largest rectangular

今回も説明が難しいですが、一番大きな長方形の面積を返す問題。 iterableにリストの数字を前から選ぶ (num) 選択された数字より大きな数字が右に何個連続しているか調べる (a) 反対方向にも調べる。(b) num*( a - b + 1)が面積 という方向性で考えました。 …

Electric Station 回文問題(The Longest Palindromic)

今回は与えられたテキスト内でもっとも長い回文を探します。 前から一文字ずつ判定 同じ文字で切れるところを探し 反転しても一致するかを調べる という方向性でやりました。 def longest_palindromic(test): ntest = [(i,test[i]) for i in range(len(test)…

Electric Station問題3 Find Sequence

正方形のMatrixの中で4つ以上連続するものがあればTrue、なければFalseを返す関数を作ります。 行内か右下がりの方向で探して、次にMatrixを90度回転させてもう一回探すという方向性でプログラムを書いてみました。 def checkio1(test): for i in range(len(…

Electric Station問題2 Hamming Distance

2進法での距離を求める問題。Hamming Distanceというらしい。 106 (219< 106 < 220) までを考慮したので良いということだったので、 def hamming_d(numb): ans = [] for i in reversed(range(0, 21)): if numb / 2**i >=1: ans.append(1) numb = numb - 2**i…

Home問題5 チェス

守られているポーンの数を数えるという課題。 説明しにくいので、適当に とりあえず、特定のポーンを守れる場所に別のポーンがあるかどうかを判別 ある場合だけsafe ポーンとして数えるというアルゴリズムで def safe_pawns(pawns): safe = 0 for i1 in pawn…

Home 問題 Long Repeat

'aaabbbccssafa' -> 3 アルファベットがもっとも長く連続する長さを返す関数を作る。 直線的にやってみます。 def long_repeat(line): if line=='': return(0) else: count=1 count_chr=[1] for i in range(1,len(line)): if line[i-1]==line[i]: count +=1 …

Home 問題4 シェイクスピア

テキストの中にwords(辞書)のうち何個含まれているか。 count_words("How aresjfhdskfhskd you?", {"how", "are", "you", "hello"}) == 3 re.searchを使って、有った場合だけ数える。とても直線的 import re def count_words(text, words): x = 0 for i in w…

Home 問題5: ●×ゲームの判定

今回は●Xゲームの勝敗決め データの与えられ方は data = ([ "O.O", "XX.", "XOX"]) で勝敗を決定する。 行列を使ってみた。 def checkio(data): mapping = {'X': '1', 'O':'-1', '.':'0'} text = [int(i.translate(str.maketrans(mapping))) for i in ''.joi…

Home 問題2

問題: 数字の入ったリストから、重複がないもののみを消す。 [1,2,3,4,5,6,4,2,5] => [2,4,5,4,2,5] #1,3,6が消去 from collections import Counter import numpy as np def checkio(data): count = Counter(data) [x for (x, y) in count.items() if y == …

記念すべき第一問目: Home 問題1

pythonのプログラミング勉強をcheckioというHPの問題を作って勉強していきます。やったことを自分のメモ用に残しておきます。 お題 textの中に含まれるアルファベットの中で最も数が多いものを返す関数”checkio"を作れ 例) "mAkoshark!!!!"だったら、"a" ポ…