thoutworks的校招作業(yè)

題目:

為了航空安全刀森,某國(guó)無人機(jī)出廠時(shí)都被安裝了一種芯片踱启。當(dāng)進(jìn)入監(jiān)控的區(qū)域時(shí),芯片都會(huì)向服務(wù)器回傳當(dāng)前的準(zhǔn)確位置信息(Signal)研底。

系統(tǒng)會(huì)將無人機(jī)回傳的信息記錄在一個(gè)文本文件中埠偿,每一條信息占據(jù)一行,格式如下:

規(guī)則一:當(dāng)無人機(jī)第一次進(jìn)入監(jiān)控區(qū)域的時(shí)候飘哨,會(huì)記錄如下的信息:{無人機(jī)ID} {X} {Y} {Z} 對(duì)于一架無人機(jī)來說胚想,這一定是第一條消息琐凭。

其中芽隆,

  • 無人機(jī)ID為無人機(jī)的唯一標(biāo)識(shí),由數(shù)字和英文字母組成。
  • X, Y, Z為無人機(jī)的位置坐標(biāo)胚吁,可以為正整數(shù)牙躺,可以為負(fù)整數(shù),也可以為0腕扶。
  • 如果消息的格式不符合上述要求孽拷,則說明無人機(jī)處于故障狀態(tài)。

規(guī)則二:當(dāng)無人機(jī)已經(jīng)發(fā)送過第一條消息半抱,并持續(xù)在監(jiān)控區(qū)域活動(dòng)脓恕,則會(huì)記錄如下的信息:{無人機(jī)ID} {X'} {Y'} {Z'} {offsetX} {offsetY} {offsetZ}

其中,

  • X'窿侈, Y'炼幔, Z' 代表該無人機(jī)前一條消息的坐標(biāo)。
  • offsetX, offsetY, offsetZ代表該無人機(jī)相比于X'史简、Y'乃秀、Z' 的移動(dòng)量≡脖可知該條消息發(fā)送時(shí)跺讯,無人機(jī)的坐標(biāo)應(yīng)當(dāng)是(X'+offsetX, Y'+offsetY,
    Z'+offsetZ)
  • 如果消息的格式不符合上述要求,或者(X'殉农、Y'刀脏、Z')和該無人機(jī)前一條消息的坐標(biāo)計(jì)算值不匹配,則說明無人機(jī)處于故障狀態(tài)统抬。

規(guī)則三:如果一旦判定一架無人機(jī)為故障狀態(tài)火本,無論接受到什么后續(xù)信息,該架無人機(jī)都處于故障狀態(tài)聪建。

  • 故障狀態(tài)下钙畔,無人機(jī)的坐標(biāo)為(NA, NA, NA)

例如:


要求:

假設(shè)每一個(gè)文本文件中僅僅記錄一架無人機(jī)的信號(hào)。則請(qǐng)你書寫一個(gè)程序(或函數(shù))金麸,該程序的輸入有兩個(gè):

  • 記錄著無人機(jī)活動(dòng)信號(hào)的文本文件(或者文本內(nèi)容}擎析。
  • —個(gè)消息序號(hào)(Signal Index),該序號(hào)代表了第幾條消息(消息序號(hào)從0開始)。

輸出為(輸出可以是函數(shù)的返回值挥下,也可以是打印在console上):

  • 若指定的消息不存在揍魂,則輸出Cannot find {消息序號(hào)}。
  • 若指定的消息存在棚瘟,且無人機(jī)正常现斋,則輸出{無人機(jī)ID} {消息序號(hào)} {X} {Y} {Z}。
  • 若指定的消息存在偎蘸,但無人機(jī)故障庄蹋,則輸出Error: {消息序號(hào)}瞬内。

例如對(duì)于輸入:

plane1 1 1 1
plane1 1 1 1 1 2 3
plane1 2 3 4 1 1 1
plane1 3 4 5
plane1 1 1 1 1 2 3

當(dāng)指定消息ID 2時(shí),應(yīng)輸出plane1 2 3 4 5
當(dāng)指定消息ID 4時(shí)限书,應(yīng)輸出Error: 4
當(dāng)指定消息ID 100時(shí)虫蝶,應(yīng)輸出:Cannot find 100

先說一下整體思路吧!題目就是要求輸入無人機(jī)消息和消息序號(hào)倦西,然后你處理一下數(shù)據(jù)能真,求得該條消息下無人機(jī)的情況,然后按要求輸出扰柠。
主要要做的就是求當(dāng)前坐標(biāo)判斷有沒有故障粉铐!這樣你才能按題目要求輸出

現(xiàn)在思路有了,但是我第一次看見這個(gè)題目的感覺就是輸入的限制特別多卤档。要考慮很多情況秦躯。我們按順序一個(gè)個(gè)來看這些坑。

  1. 當(dāng)無人機(jī)第一次進(jìn)入監(jiān)控區(qū)域的時(shí)候裆装,會(huì)記錄如下的信息:{無人機(jī)ID} {X} {Y} {Z} 對(duì)于一架無人機(jī)來說踱承,這一定是第一條消息。

這個(gè)無疑是一個(gè)很重要的條件哨免,第一行一定要滿足{無人機(jī)ID} {X} {Y} {Z}這樣的格式茎活。

  1. 無人機(jī)ID為無人機(jī)的唯一標(biāo)識(shí),由數(shù)字和英文字母組成琢唾。

id由數(shù)字和英文字母組成载荔。說明還要用正則判斷一下id

  1. X, Y, Z為無人機(jī)的位置坐標(biāo),可以為正整數(shù)采桃,可以為負(fù)整數(shù)懒熙,也可以為0。

坐標(biāo)為整數(shù)普办,注意不能是別的字符

  1. 當(dāng)無人機(jī)已經(jīng)發(fā)送過第一條消息工扎,并持續(xù)在監(jiān)控區(qū)域活動(dòng),則會(huì)記錄如下的信息:{無人機(jī)ID} {X'} {Y'} {Z'} {offsetX} {offsetY} {offsetZ}

說明從第二條信息開始衔蹲,必須嚴(yán)格滿足{無人機(jī)ID} {X'} {Y'} {Z'} {offsetX} {offsetY} {offsetZ}這種格式

  1. X'肢娘, Y', Z' 代表該無人機(jī)前一條消息的坐標(biāo)舆驶。

這個(gè) X'橱健, Y', Z' 不是隨隨便便寫的沙廉,必須和前一條消息的坐標(biāo)相對(duì)應(yīng)拘荡。這個(gè)應(yīng)該是最最重要的點(diǎn)了

  1. offsetX, offsetY, offsetZ代表該無人機(jī)相比于X'、Y'撬陵、Z' 的移動(dòng)量珊皿」倨#可知該條消息發(fā)送時(shí),無人機(jī)的坐標(biāo)應(yīng)當(dāng)是(X'+offsetX, Y'+offsetY,
    Z'+offsetZ)

這個(gè)規(guī)則是在教我們?cè)趺从?jì)算無人機(jī)的當(dāng)前坐標(biāo)亮隙。和第5條對(duì)應(yīng)起來,某條消息的當(dāng)前坐標(biāo)應(yīng)該是下一條消息的X'垢夹、Y'溢吻、Z'

  1. 如果消息的格式不符合上述要求,或者(X'果元、Y'促王、Z')和該無人機(jī)前一條消息的坐標(biāo)計(jì)算值不匹配,則說明無人機(jī)處于故障狀態(tài)而晒。

一定要判斷清楚蝇狼,每個(gè)點(diǎn)都要判斷到位

  1. 如果一旦判定一架無人機(jī)為故障狀態(tài),無論接受到什么后續(xù)信息倡怎,該架無人機(jī)都處于故障狀態(tài)迅耘。

這個(gè)也要注意一些,但是我覺得這個(gè)應(yīng)該是最簡(jiǎn)單的监署。我們可以反向?qū)崿F(xiàn)颤专,也就是說初始狀態(tài)都是故障,然后一個(gè)個(gè)判斷是否故障钠乏。一有故障就可以break栖秕,后面的消息都不用再判斷了。

另外還有一些隱藏的點(diǎn)晓避。比如題目里說

假設(shè)每一個(gè)文本文件中僅僅記錄一架無人機(jī)的信號(hào)

那么一個(gè)文本文件里面就不能出現(xiàn)多個(gè)id簇捍。我把無人機(jī)id和前面不一樣的那條消息判斷為故障

還有,

—個(gè)消息序號(hào)(Signal Index),該序號(hào)代表了第幾條消息(消息序號(hào)從0開始)俏拱。

我自己實(shí)現(xiàn)的時(shí)候暑塑,是只要輸入非數(shù)字,就提示請(qǐng)輸入一個(gè)數(shù)字锅必;輸入負(fù)數(shù)的時(shí)候梯投,輸出Cannot find {序號(hào)}。負(fù)數(shù)的問題因?yàn)轭}目沒怎么詳細(xì)講况毅,所以應(yīng)該只要考慮到了就行分蓖。

還有,我考慮了空文本的問題尔许,也就是說一行消息也沒有么鹤。

我實(shí)現(xiàn)的是永遠(yuǎn)輸出Cannot find {序號(hào)}

另外,就是有空行的問題味廊,

中間有空行的情況我是這么實(shí)現(xiàn)的:比如像下面的輸入

plane1 1 1 1
plane1 1 1 1 1 2 3
plane1 2 3 4 1 1 1
plane1 3 4 5 2 3 4
plane1 5 7 9 1 2 3

plane1 6 9 12 0 0 0
plane1 6 9 12 1 1 -2
plane1 7 10 10 0 0 0

消息ID 0-4:{無人機(jī)ID} {消息序號(hào)} {X} {Y} {Z}
消息ID 5-8:Error: {消息序號(hào)}
消息ID >=9或<0:Cannot find {消息序號(hào)}

而末尾有空行的情況下蒸甜,我是直接把末尾的空行去掉了棠耕。
雖然題目好像并沒有說明這些情況該如何處理,但是還是要考慮得全面一點(diǎn)的哦~

然后輸入輸出一定要和題目要求嚴(yán)格一致的~這個(gè)做過題的都明白的柠新。說了這么多窍荧,我把我用js實(shí)現(xiàn)的代碼放在github上了:
https://github.com/thelastto/UAV

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市恨憎,隨后出現(xiàn)的幾起案子蕊退,更是在濱河造成了極大的恐慌,老刑警劉巖憔恳,帶你破解...
    沈念sama閱讀 212,080評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件瓤荔,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡钥组,警方通過查閱死者的電腦和手機(jī)输硝,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,422評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來程梦,“玉大人点把,你說我怎么就攤上這事∮旄剑” “怎么了愉粤?”我有些...
    開封第一講書人閱讀 157,630評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)拿撩。 經(jīng)常有香客問我衣厘,道長(zhǎng),這世上最難降的妖魔是什么压恒? 我笑而不...
    開封第一講書人閱讀 56,554評(píng)論 1 284
  • 正文 為了忘掉前任影暴,我火速辦了婚禮,結(jié)果婚禮上探赫,老公的妹妹穿的比我還像新娘型宙。我一直安慰自己,他們只是感情好伦吠,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,662評(píng)論 6 386
  • 文/花漫 我一把揭開白布妆兑。 她就那樣靜靜地躺著,像睡著了一般毛仪。 火紅的嫁衣襯著肌膚如雪搁嗓。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,856評(píng)論 1 290
  • 那天箱靴,我揣著相機(jī)與錄音腺逛,去河邊找鬼。 笑死衡怀,一個(gè)胖子當(dāng)著我的面吹牛棍矛,可吹牛的內(nèi)容都是我干的安疗。 我是一名探鬼主播,決...
    沈念sama閱讀 39,014評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼够委,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼荐类!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起茁帽,我...
    開封第一講書人閱讀 37,752評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤玉罐,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后脐雪,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,212評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡恢共,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,541評(píng)論 2 327
  • 正文 我和宋清朗相戀三年战秋,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片讨韭。...
    茶點(diǎn)故事閱讀 38,687評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡脂信,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出透硝,到底是詐尸還是另有隱情狰闪,我是刑警寧澤,帶...
    沈念sama閱讀 34,347評(píng)論 4 331
  • 正文 年R本政府宣布濒生,位于F島的核電站埋泵,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏罪治。R本人自食惡果不足惜丽声,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,973評(píng)論 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望觉义。 院中可真熱鬧雁社,春花似錦、人聲如沸晒骇。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,777評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽洪囤。三九已至徒坡,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間瘤缩,已是汗流浹背崭参。 一陣腳步聲響...
    開封第一講書人閱讀 32,006評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留款咖,地道東北人何暮。 一個(gè)月前我還...
    沈念sama閱讀 46,406評(píng)論 2 360
  • 正文 我出身青樓奄喂,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親海洼。 傳聞我的和親對(duì)象是個(gè)殘疾皇子跨新,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,576評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)坏逢,斷路器域帐,智...
    卡卡羅2017閱讀 134,633評(píng)論 18 139
  • 國(guó)家電網(wǎng)公司企業(yè)標(biāo)準(zhǔn)(Q/GDW)- 面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議 - 報(bào)批稿:20170802 前言: 排版 ...
    庭說閱讀 10,932評(píng)論 6 13
  • 《裕語言》速成開發(fā)手冊(cè)3.0 官方用戶交流:iApp開發(fā)交流(1) 239547050iApp開發(fā)交流(2) 10...
    葉染柒丶閱讀 26,286評(píng)論 5 19
  • thiele插值算法 1點(diǎn)插值算法 function [C,c]=thiele(X,Y,Z)%X為插值點(diǎn)橫坐標(biāo),Y...
    00crazy00閱讀 1,978評(píng)論 0 4
  • 時(shí)常回憶起小學(xué)一年級(jí)的某一天睡覺前浮入,姥姥問我:將來想做什么龙优?環(huán)顧了那個(gè)用中學(xué)生報(bào)貼滿墻的房間,我說出了一個(gè)光輝偉大...
    candy_love閱讀 369評(píng)論 0 0