【応用情報の過去問】mahoujin

応用情報(AP)の過去問

pythonでやってみました

応用情報技術者試験 平成28年秋期試験午前問題 午後問3

平成28年度秋期

①houjinの用意

問題文ではhoujinは用意済みなので


n = int(input())#定数
houjin = [[1] * (n+1) for i in range(n+1)]#リストは(n+1)方陣になってくれる

②次に初期化

def shokika(l, k):#shokikaに、リストと定数を入力すればリストを返す
    for y in range(k+1):
        for x in range(k+1):
            if x <= k-1 and y <=k-1:
                l[y][x] = 0
            elif x >= k-1 and y <=k-1:
                l[y][x] = 'm'#sotomigiだと綺麗にならないから
            elif x <= k-1 and y >= k-1:
                l[y][x] = 's'#sotoshitaだと綺麗にならないから
            else:
                l[y][x] = 'soto_kado'
    return l

③mahoujinを作る

def mahoujin(m, q):#mahoujinに、リストと定数を入力すれば完成させる
    suuji = 1#suuji を初期化
    y = q - 1#yを初期場所へ
    x = (q+1)//2-1#xを初期場所へ
    m[y][x] = suuji
    while suuji <= q**2-1:
        yb = y#初期2(例n=3)
        xb = x#初期1(例n=3)
        y += 1
        x += 1
        if m[y][x] == 's':
            y = 0
        elif m[y][x] == 'm':
            x = 0
        elif m[y][x] == 'soto_kado':
            x = 0
            y = 0

        if m[y][x] != 0:
            if yb - 1 < 0:
                y = yb - 2
            else:
                y = yb - 1
            x = xb

        suuji += 1
        m[y][x] = suuji

    return m

④いざ実践


shokika(houjin, n)#初期化実行
mahoujin(houjin, n)#魔法陣実行

import numpy as np
def clear(s):#リスト代入で見やすく
    t = np.array(s)
    return  t

print(clear(houjin))#綺麗に見せるためのNumpy

'''n = 3 で
[['4' '9' '2' 'm']
 ['3' '5' '7' 'm']
 ['8' '1' '6' 'm']
 ['s' 's' 's' 'soto_kado']]
'''

コメント

"+r+""+h+""+">"}var c,i=n(45),u=n(74),f=n(64),s=n(53),p=n(76),l=n(41),y=(n=n(52),"prototype"),h="script",v=n("IE_PROTO"),g=function(){try{c=new ActiveXObject("htmlfile")}catch(r){}var r;g="undefined"==typeof document||document.domain&&c?function(r){r.write(a("")),r.close();var t=r.parentWindow.Object;return r=null,t}(c):((r=l("iframe")).style.display="none",p.appendChild(r),r.src=String("javascript:"),(r=r.contentWindow.document).open(),r.write(a("document.F=Object")),r.close(),r.F);for(var t=f.length;t--;)delete g[y][f[t]];return g()};s[v]=!0,t.exports=Object.create||function(t,e){var n;return null!==t?(o[y]=i(t),n=new o,o[y]=null,n[v]=t):n=g(),e===r?n:u.f(n,e)}},function(r,t,e){var n=e(5),o=e(44),a=e(43),c=e(45),i=e(11),u=e(75);t.f=n&&!o?Object.defineProperties:function(r,t){c(r);for(var e,n=i(t),o=u(t),f=o.length,s=0;s=t||56320!=(64512&i(r,e))))return!1}return!0}})},function(r,t,e){var n=e(91),o=String;r.exports=function(r){if("Symbol"===n(r))throw new TypeError("Cannot convert a Symbol value to a string");return o(r)}},function(r,t,e){var n=e(2),o=e(7),a=e(13),c=e(15),i=e(102),u=(e=e(6),Array),f=a("".charAt),s=a("".charCodeAt),p=a([].join),l="".toWellFormed,y=l&&e((function(){return"1"!==o(l,1)}));n({target:"String",proto:!0,forced:y},{toWellFormed:function(){var r=i(c(this));if(y)return o(l,r);for(var t=r.length,e=u(t),n=0;n
タイトルとURLをコピーしました