検索
AND検索
OR検索
トップ
|
リロード
|
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
練習問題/解答例/回文判定プログラム/Python をテンプレートにして作成
はじめて
はじめてなの…やさしくして…
よくある質問
質問の仕方
検索テクニック
プログラミング用語
講座一覧
↑
プログラミング言語
どの言語を学ぶべき?
プログラミング言語おしながき
プログラミング言語
HelloWorld
↑
開発関連
ソフトウェアを公開する
コマンドプロンプトの使い方
ゲーム作りたいです
バージョン管理
開発環境
-
エディタ
Win32 リソースエディタ
ツール
↑
オブジェクト指向
オブジェクト指向プログラミング
コンストラクタとデストラクタ
デザインパターン
↑
Unix
Unix入門
↑
共通項
数学
論理代数
物理
色、いわゆるカラー
アルゴリズムとデータ構造
プログラマ的ネットワーク適当講座
専ブラ開発への道
練習問題
練習問題(アルゴリズム編)
オンラインジャッジ
大会・コンテスト
大会告知の人の問題まとめ
code golf入門/C言語編
↑
キャリア
英語
資格・試験
進路の選び方
↑
その他
書籍レビュー
オヌヌメサイト
動画リンク集
おすすめフィード
成果物
マのネタ帳
ネタ
プロジェクト
プログラマーやハッカーが活躍する映画・ドラマとか
人気のページ
リクエスト
導入済プラグインリスト
Wikiの編集について
?
最新の20件
2017-04-13
test
2015-05-19
解答例/転置行列/Excel VBA
2015-05-17
英語
2015-05-09
練習問題/解答例/C++11/練習問題解答例
練習問題
2015-04-06
マのネタ帳
2015-04-01
練習問題/解答例/Scala
2015-01-31
アルゴリズムとデータ構造
2015-01-14
練習問題/解答例/シェルピンスキーのギャスレット/Python
2015-01-11
プログラミングスレまとめ in VIP
2015-01-03
数学
2014-12-22
練習問題/解答例/FizzBuzz/D
2014-12-21
オンラインジャッジ
2014-11-30
練習問題/解答例/回文判定プログラム/Python
2014-11-24
プログラマーやハッカーが活躍する映画・ドラマとか
2014-11-23
MenuBar
2014-11-05
練習問題/解答例/迷路を解くプログラム/Python
2014-11-03
ソフトウェアを公開する
エディタ
2014-10-01
練習問題/解答例/フィボナッチ数列1/Python
Menubarを編集する
total:0
today:0
yesterday:0
現在
5
人が訪問中
開始行:
[[練習問題]]
#!/usr/bin/python
# -*- coding: utf-8 -*-
# main.py
from collections import namedtuple
Word = namedtuple('Word', 'letter, pos')
class Solver:
def __init__(self, s):
self.copy = s
self.arr = list(s)
self.cost = 0
def __change(self, letter, cost, *pos):
for p in pos:
self.arr[p] = letter
self.cost += cost * len(pos)
__change_to_N = lambda self, *pos: self.__change('N'...
__change_to_O = lambda self, *pos: self.__change('O'...
def to_palindromically(self):
sz = len(self.arr)
for i in xrange(sz/2):
j = -1 - i
if self.arr[i] == self.arr[j]:
if self.arr[i] == '*':
self.__change_to_N(i, j)
else:
if not '*' in (self.arr[i], self.arr[j]):
return (self.copy, -1)
srt = sorted((Word(self.arr[i], i), Word...
if srt[-1].letter == 'N':
self.__change_to_N(srt[0].pos)
elif srt[-1].letter == 'O':
self.__change_to_O(srt[0].pos)
if sz & 1 and self.arr[sz/2] == '*':
self.__change_to_N(sz/2)
return ''.join(self.arr), self.cost
#!/usr/bin/python
# -*- coding: utf-8 -*-
# test.py
from main import Solver
from collections import namedtuple
import unittest
T = namedtuple('T', 'input_data, expected')
test_cases = [
T('NOO*', ('NOON', 10)),
T('NO*N', ('NOON', 15)),
T('NO', ('NO', -1)),
T('O*O', ('ONO', 10)),
T('*********', ('NNNNNNNNN', 90)),
T('**********', ('NNNNNNNNNN', 100)),
T('*O*******', ('NONNNNNON', 85)),
T('*O********', ('NONNNNNNON', 95)),
T('*N*******', ('NNNNNNNNN', 80)),
T('*N********', ('NNNNNNNNNN', 90)),
T('*N*****O*', ('*N*****O*', -1)),
T('*N******O*', ('*N******O*', -1)),
T('****N****', ('NNNNNNNNN', 80)),
T('****N*****', ('NNNNNNNNNN', 90)),
T('****O****', ('NNNNONNNN', 80)),
T('****NO****', ('****NO****', -1)),
]
class TestSequence(unittest.TestCase):
pass
def test_generator(input_data, expected):
def test(self):
obj = Solver(input_data)
self.assertEqual(obj.to_palindromically(), expec...
return test
for case in test_cases:
name = 'test{0}'.format(case.input_data)
test = test_generator(case.input_data, case.expected)
setattr(TestSequence, name, test)
suite = unittest.TestLoader().loadTestsFromTestCase(Test...
unittest.TextTestRunner().run(suite)
終了行:
[[練習問題]]
#!/usr/bin/python
# -*- coding: utf-8 -*-
# main.py
from collections import namedtuple
Word = namedtuple('Word', 'letter, pos')
class Solver:
def __init__(self, s):
self.copy = s
self.arr = list(s)
self.cost = 0
def __change(self, letter, cost, *pos):
for p in pos:
self.arr[p] = letter
self.cost += cost * len(pos)
__change_to_N = lambda self, *pos: self.__change('N'...
__change_to_O = lambda self, *pos: self.__change('O'...
def to_palindromically(self):
sz = len(self.arr)
for i in xrange(sz/2):
j = -1 - i
if self.arr[i] == self.arr[j]:
if self.arr[i] == '*':
self.__change_to_N(i, j)
else:
if not '*' in (self.arr[i], self.arr[j]):
return (self.copy, -1)
srt = sorted((Word(self.arr[i], i), Word...
if srt[-1].letter == 'N':
self.__change_to_N(srt[0].pos)
elif srt[-1].letter == 'O':
self.__change_to_O(srt[0].pos)
if sz & 1 and self.arr[sz/2] == '*':
self.__change_to_N(sz/2)
return ''.join(self.arr), self.cost
#!/usr/bin/python
# -*- coding: utf-8 -*-
# test.py
from main import Solver
from collections import namedtuple
import unittest
T = namedtuple('T', 'input_data, expected')
test_cases = [
T('NOO*', ('NOON', 10)),
T('NO*N', ('NOON', 15)),
T('NO', ('NO', -1)),
T('O*O', ('ONO', 10)),
T('*********', ('NNNNNNNNN', 90)),
T('**********', ('NNNNNNNNNN', 100)),
T('*O*******', ('NONNNNNON', 85)),
T('*O********', ('NONNNNNNON', 95)),
T('*N*******', ('NNNNNNNNN', 80)),
T('*N********', ('NNNNNNNNNN', 90)),
T('*N*****O*', ('*N*****O*', -1)),
T('*N******O*', ('*N******O*', -1)),
T('****N****', ('NNNNNNNNN', 80)),
T('****N*****', ('NNNNNNNNNN', 90)),
T('****O****', ('NNNNONNNN', 80)),
T('****NO****', ('****NO****', -1)),
]
class TestSequence(unittest.TestCase):
pass
def test_generator(input_data, expected):
def test(self):
obj = Solver(input_data)
self.assertEqual(obj.to_palindromically(), expec...
return test
for case in test_cases:
name = 'test{0}'.format(case.input_data)
test = test_generator(case.input_data, case.expected)
setattr(TestSequence, name, test)
suite = unittest.TestLoader().loadTestsFromTestCase(Test...
unittest.TextTestRunner().run(suite)
ページ名: