【checkio】Roman Numerals(Electronic Station)

【他の人のコード】

def _make_roman_nums(i, v, x):
    return ['', i, i * 2, i * 3, i + v, v, v + i, v + i * 2, v + i * 3, i + x]
<200b>
roman_nums = [_make_roman_nums('I', 'V', 'X'),  # ones
              _make_roman_nums('X', 'L', 'C'),  # tens
              _make_roman_nums('C', 'D', 'M'),  # hundreds
              _make_roman_nums('M', '', '')[:4]]  # thousands
<200b>
def checkio(number):
    # 852 -> (3, 0), (2, 8), (1, 5), (0, 2)
    digits = [(place, number // (10 ** place) % 10) for place in range(3, -1, -1)]
    return ''.join(roman_nums[place][value] for place, value in digits)
<200b>||<

【自分のコード】
>|python|
def checkio(data):
    roman_list = []

    #1
    roman_list.append(create_roman_list("I", "V", "X"))
    #10
    roman_list.append(create_roman_list("X", "L", "C"))
    #100
    roman_list.append(create_roman_list("C", "D", "M"))
    #1000
    roman_list.append(create_roman_list("M", "", ""))

    str_data = str(data)
    
    #replace this for solution
    return_data = "".join([roman_list[len(str_data)-1-i][int(str_data[i])] for i in range(len(str_data))])
    
    return return_data
    
def create_roman_list(i, v, x):
    return ["", i, i+i, i+i+i, i+v, v, v+i, v+i+i, v+i+i+i, i+x]

if __name__ == '__main__':
    
    #These "asserts" using only for self-checking and not necessary for auto-testing
    assert checkio(6) == 'VI', '6'
    assert checkio(76) == 'LXXVI', '76'
    assert checkio(499) == 'CDXCIX', '499'
    assert checkio(3888) == 'MMMDCCCLXXXVIII', '3888'

【checkio】Pawn Brotherhood(Home)

【他の人の驚きコード】

def safe_pawns(pawns):
    return  sum(str(chr(ord(i[0])-1))+str(int(i[1])-1)in pawns or str(chr(ord(i[0])+1))+str(int(i[1])-1) in pawns for i in pawns)

【自分の書いたコード】

def safe_pawns(pawns):
    potential_position = []
    for val in pawns:
        temp_list = calc_cross(val)
        potential_position += temp_list
    count = [i in potential_position for i in pawns].count(True)

    return count

#斜めの位置のコマ位置を計算
def calc_cross(analyze_str):
    return_list = []
    
    for loop_cnt in range(2):
        if 0 < int(analyze_str[1]) < 8:
            if(ord(analyze_str[0]) == 97):
                data_1 = chr(ord(analyze_str[0])+1)
                data_2 = int(analyze_str[1]) + 1
                return_list.append(data_1 + str(data_2))
            if(ord(analyze_str[0]) == 122):
                data_1 = chr(ord(analyze_str[0])-1)
                data_2 = int(analyze_str[1]) + 1
                return_list.append(data_1 + str(data_2))
            else:
                data_1_1 = chr(ord(analyze_str[0])-1)
                data_1_2 = chr(ord(analyze_str[0])+1)
                data_2 = int(analyze_str[1]) + 1
                return_list.append(data_1_1 + str(data_2))
                return_list.append(data_1_2 + str(data_2))
    return return_list

if __name__ == '__main__':
    #These "asserts" using only for self-checking and not necessary for auto-testing
    assert safe_pawns({"b4", "d4", "f4", "c3", "e3", "g5", "d2"}) == 6
    assert safe_pawns({"b4", "c4", "d4", "e4", "f4", "g4", "e5"}) == 1
    print("Coding complete? Click 'Check' to review your tests and earn cool rewards!")

【checkio】Pawn Brotherhood(Home)

【他の人の驚きコード】

def safe_pawns(pawns):
    return  sum(str(chr(ord(i[0])-1))+str(int(i[1])-1)in pawns or str(chr(ord(i[0])+1))+str(int(i[1])-1) in pawns for i in pawns)
<

【自分の書いたコード】
>|python|
def safe_pawns(pawns):
    potential_position = []
    for val in pawns:
        temp_list = calc_cross(val)
        potential_position += temp_list
    count = [i in potential_position for i in pawns].count(True)

    return count

#斜めの位置のコマ位置を計算
def calc_cross(analyze_str):
    return_list = []
    
    for loop_cnt in range(2):
        if 0 < int(analyze_str[1]) < 8:
            if(ord(analyze_str[0]) == 97):
                data_1 = chr(ord(analyze_str[0])+1)
                data_2 = int(analyze_str[1]) + 1
                return_list.append(data_1 + str(data_2))
            if(ord(analyze_str[0]) == 122):
                data_1 = chr(ord(analyze_str[0])-1)
                data_2 = int(analyze_str[1]) + 1
                return_list.append(data_1 + str(data_2))
            else:
                data_1_1 = chr(ord(analyze_str[0])-1)
                data_1_2 = chr(ord(analyze_str[0])+1)
                data_2 = int(analyze_str[1]) + 1
                return_list.append(data_1_1 + str(data_2))
                return_list.append(data_1_2 + str(data_2))
    return return_list

if __name__ == '__main__':
    #These "asserts" using only for self-checking and not necessary for auto-testing
    assert safe_pawns({"b4", "d4", "f4", "c3", "e3", "g5", "d2"}) == 6
    assert safe_pawns({"b4", "c4", "d4", "e4", "f4", "g4", "e5"}) == 1
    print("Coding complete? Click 'Check' to review your tests and earn cool rewards!")

【checkio】Pawn Brotherhood(Home)

def safe_pawns(pawns):
    potential_position = []
    for val in pawns:
        temp_list = calc_cross(val)
        potential_position += temp_list
    count = [i in potential_position for i in pawns].count(True)

    return count

#斜めの位置のコマ位置を計算
def calc_cross(analyze_str):
    return_list = []
    
    for loop_cnt in range(2):
        if 0 < int(analyze_str[1]) < 8:
            if(ord(analyze_str[0]) == 97):
                data_1 = chr(ord(analyze_str[0])+1)
                data_2 = int(analyze_str[1]) + 1
                return_list.append(data_1 + str(data_2))
            if(ord(analyze_str[0]) == 122):
                data_1 = chr(ord(analyze_str[0])-1)
                data_2 = int(analyze_str[1]) + 1
                return_list.append(data_1 + str(data_2))
            else:
                data_1_1 = chr(ord(analyze_str[0])-1)
                data_1_2 = chr(ord(analyze_str[0])+1)
                data_2 = int(analyze_str[1]) + 1
                return_list.append(data_1_1 + str(data_2))
                return_list.append(data_1_2 + str(data_2))
    return return_list

if __name__ == '__main__':
    #These "asserts" using only for self-checking and not necessary for auto-testing
    assert safe_pawns({"b4", "d4", "f4", "c3", "e3", "g5", "d2"}) == 6
    assert safe_pawns({"b4", "c4", "d4", "e4", "f4", "g4", "e5"}) == 1
    print("Coding complete? Click 'Check' to review your tests and earn cool rewards!")

【Python】str()でエラーが起きてしまう

エラー内容は以下。

TypeError: 'str' object is not callable
<
自分でも笑ってしまったが、自身のプログラムの中でstrという変数を宣言していた。strはビルトイン関数のstr()の名前と重複していることが原因みたい。

【Python】True,Falseのカウント

Python3です。

[True, True, True, True, True, True, False]のようなリストがあり、
Trueの数を数えたい場合。

count = [True, True, True, True, True, True, False].count(True)
print(count)

【jQuery】次の要素を削除・前の要素を削除

次の要素の取得と前の要素のオブジェクトの取得は以下で取得できます。

$('セレクタ名').next();
// 直後がpタグの場合のみ発動
// 指定したいオブジェクトが直後ではない場合はnextAll()を使います
// divでもimgでもそういう系であればなんでも可
$('セレクタ名').next("p");
$('セレクタ名').prev();
// 直前がpタグの場合のみ発動
// 指定したいオブジェクトが直前ではない場合はnextAll()を使います
// divでもimgでもそういう系であればなんでも可
$('セレクタ名').prev("p");

このようにしてオブジェクトを取得することができるので、早速削除しましょう

$('セレクタ名').next().remove();
$('セレクタ名').next("p").remove();
$('セレクタ名').prev().remove();
$('セレクタ名').prev("p").remove();