Re: [wizs] 巫師升等測驗題目二
看板mud_sanc (Sanctuary - 聖殿)作者dragondoll (龍娃娃)時間17年前 (2008/11/20 20:11)推噓0(0推 0噓 0→)留言0則, 0人參與討論串3/3 (看更多)
都最後一天了看起來應沒其他人要寫我就直接發了。
程式位置: /u/d/dragondoll/question/q2.c
程式行數: 算這幹嘛?
執行結果: 略
這題大概花了我看兩節生理共筆的時間完成。
有些地方寫的有點不滿意,不過我也不想多花時間改了。
另,原則上不多做題目要求以外的容錯判定。
inherit ROOM;
void create()
{
::create();
seteuid(getuid());
set("light",1);
set("short","Test2");
set("long",@PLAIN
PLAIN
);
}
void init()
{
add_action("test41","test2");
}
mixed show_rearrange(mixed fa2)
{
int i,j;
string msg=""; for(i=0;i<sizeof(fa2);i++)
{
for(j=0;j<sizeof(fa2[i]);j++)
{
if(j==4)
{
if(fa2[i][j]==" 爆!"){ msg = msg + HIR + fa2[i][j]+NOR;
fa2[i][j]= HIR + fa2[i][j]+NOR;} else if(fa2[i][j]==" HOT"){
msg = msg + HIW + fa2[i][j]+NOR; fa2[i][j]= HIW + fa2[i][j]+NOR;}
else msg = msg + fa2[i][j];
}
else msg = msg + fa2[i][j];
}
msg = msg + "\n";
}
write(msg);
return fa2;
}
int test41(string str)
{
string file,ss,msg;
int i; mixed fa,fa2;
file = read_file("/d/test2.txt");
fa = explode(file,"\n");
fa2=allocate(sizeof(fa));
msg = ""; for(i=0;i<sizeof(fa);i++)
{
ss = fa[i];
fa2[i]=allocate(6);
fa2[i][0] = ss[0..9];
fa2[i][2] = ss[10..22];
fa2[i][1] = ss[23..27];
fa2[i][3] = ss[28..61];
fa2[i][4] = ss[62..66];
fa2[i][5] = ss[67..strlen(fa[i])-1]; //在這裡只要改變數字的順序就可以變
換顯示了, 此處僅變換2, 3項
}
fa2 = show_rearrange(fa2);
fa2 = sort_array(fa2,"ig1",this_object());
write("依人氣排序顯示:\n");
show_rearrange(fa2);
fa2 = sort_array(fa2,"ig2",this_object());
write("依類別排序顯示:\n");
show_rearrange(fa2);
fa2 = sort_array(fa2,"ig3",this_object());
write("依板名排序顯示:\n");
show_rearrange(fa2);
return 1;
}
int ig1(mixed a,mixed b)
{
int ax,bx;
if(a[4]==HIR+" 爆!"+NOR)ax = 999;
else if(a[4]==HIW+" HOT"+NOR)ax = 101;
else ax=atoi(a[4]);
if(b[4]==HIR+" 爆!"+NOR) bx = 999;
else if(b[4]==HIW+" HOT"+NOR) bx = 101;
else bx = atoi(b[4]);
if(ax>bx)return 1;
else if(ax<bx)return -1;
else return 0;
}
int ig2(mixed a,mixed b)
{
if(a[1]=="類別 ")return -1;
else if(b[1]=="類別 ")return 1;
if(a[1]>b[1])return 1;
else if(a[1]<b[1])return -1;
else return 0;
}
int ig3(mixed a,mixed b)
{
string ax,bx;
if(a[2]=="看 板 ")return -1;
else if(b[2]=="看 板 ")return 1;
ax = capitalize(a[2]);
bx = capitalize(b[2]);
if(ax>bx)return 1;
else if(ax<bx)return -1;
else return 0;
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.194.152.155
討論串 (同標題文章)
完整討論串 (本文為第 3 之 3 篇):
1
2
mud_sanc 近期熱門文章
PTT遊戲區 即時熱門文章
35
58
120
255