ThoughtWorks Merchant's Guide To The Galaxy
ThoughtWorks笔试题之Merchant's Guide To The Galaxy解析
一、背景
在某网站上看到ThoughtWorks在武汉招人,待遇在本地还算不错,就投递了简历。第二天HR就打开电话,基本了解了一下情况(工作环境不错,男人妹子比例:1:1,双休,六险一金,满一年年假15天,病假8天,月薪1W--2W)。然后立马收到一封:Coding Assignment的笔试题目。网上搜索了一下,发现这个公司还是挺大的,公司面试流程是出了名的繁杂和苛刻。据说有8轮:电话面试=》笔试=》Homework=》结对编程(中午管饭)=》技术面试=》PM面试=》HR Manager的面试=》Boss面谈。
了解到武汉这边的主要是做知道华为这样的公司做敏捷开发培训,需要出差,也会有自己公司的一些些代码的需求。这边公司规模也就20几个人。希望对其他想去的童鞋有所帮助。
管它呢,试试再说/本文重点说一下笔试题目,因为我觉得还挺有意思的。
不好意思,刚收到邮件通知,我己经阵亡,说是没有适合我 skills and background 的职位。莫非跟这个题目有关,大家帮我看一下哦。
二、题目:
三个问题任选其一:我就选了第一个”Problem One: Merchant's Guide To The Galaxy“,另外两道题有需要的原有找我要。
题干给大家贴出来,下面有中文说明,可跳过。
|
Symbol |
Value |
|
I |
1 |
|
V |
5 |
|
X |
10 |
|
L |
50 |
|
C |
100 |
|
D |
500 |
|
M |
1,000 |
- The symbols "I", "X", "C", and "M" can be repeated three times in succession, but no more. (They may appear four times if the third and fourth are separated by a smaller value, such as XXXIX.) "D", "L", and "V" can never be repeated.
- "I" can be subtracted from "V" and "X" only. "X" can be subtracted from "L" and "C" only. "C" can be subtracted from "D" and "M" only. "V", "L", and "D" can never be subtracted.
- Only one small-value symbol may be subtracted from any large-value symbol.
- A number written in [16]Arabic numerals can be broken into digits. For example, 1903 is composed of 1, 9, 0, and 3. To write the Roman numeral, each of the non-zero digits should be treated separately. Inthe above example, 1,000 = M, 900 = CM, and 3 = III. Therefore, 1903 = MCMIII.
可以用:Java, Ruby, or C#, JavaScript.
中文:大意就是我成了地球首富,然后有很多钱,但是地球已经不适合人类居住了,需要跑到银河系去做生意,但是银河系使用的是罗马字母表示钱,所以座位程序员的我打算自己写一个罗马字母和十进制数字互转的小程序,以帮助我做生意。
罗马字母有: I,V,X,L,C,D,M
转换规则:
1. I:可以表示十进制数字1,V:可以表示十进制数字5,X:可以表示十进制数字10,L:可以表示十进制数字50,C:可以表示十进制数字100,D:可以表示十进制数字500,M:可以表示十进制数字1000;
2.I, X, C, and M可以重复出现最多3次;
3.一般是从后往前排列:即MDCLXVI的顺序,当然也允许相邻的两个倒序,但是需要符合以下规则:
I :只能组合IV ,IX
X:只能组合XL,XC
C:只能组合CD,CM
V,L,D不能倒序
大概是这个意思,上周做的,现在大脑还残存这些碎片。
三、我的思路
既然要考察面向对象的编程,就建一个Roman的类表示单个罗马字母,根据转换规则添加一些Property,如下:
在新建一个类专门做转换:
程序输出:

代码不解释,请大牛批评指正。
代码下载:http://files.cnblogs.com/deepleo/RomanNumber.rar
ThoughtWorks Merchant's Guide To The Galaxy的更多相关文章
- 五、Pandas玩转数据
Series的简单运算 import numpy as np import pandas as pd s1=pd.Series([1,2,3],index=['A','B','C']) print(s ...
- acpi和btrfs-安装opensuse时的选项
g-------------------- 关于GPL和LGPL和QPL等 读书笔记:采用LGPL的代码,一般情况下它本身就是一个第三方库(别忘了LGPL最早的名字就是Library GPL),这时候 ...
- What is machine learning?
What is machine learning? One area of technology that is helping improve the services that we use on ...
- 解密TTY
本文内容来自The TTY demystified ,讲述了*NIX系统中TTY的历史与工作原理,看完后解决了我很多疑惑,于是做此翻译,与大家分享. 译者:李秋豪 江家伟 审校: V1.0 Sun M ...
- jquery mobiscroll 滑动、滚动
mobiscroll : 滑动选择 2.13.2版本免费,官网(mobiscroll.com)收费 先从官方下载2.13.2体验版下来,查看例子结合官方API学习( http://docs.mobis ...
- Github上的1000多本免费电子书重磅来袭!
Github上的1000多本免费电子书重磅来袭! 以前 StackOverFlow 也给出了一个免费电子书列表,现在在Github上可以看到时刻保持更新的列表了. 瞥一眼下面的书籍分类目录,你就能 ...
- Github 的一个免费编程书籍列表
Index Ada Agda Alef Android APL Arduino ASP.NET MVC Assembly Language Non-X86 AutoHotkey Autotools A ...
- The TTY demystified
http://www.linusakesson.net/programming/tty/index.php The TTY demystified Real teletypes in the 1940 ...
- Deep Dive into Neo4j 3.5 Full Text Search
In this blog we will go over the Full Text Search capabilities available in the latest major release ...
随机推荐
- SVD奇异值分解的几何物理意义资料汇总
学习SVD奇异值分解的网上资料汇总: 1. 关于svd的一篇概念文,这篇文章也是后续几篇文章的鼻祖~ http://www.ams.org/samplings/feature-column/fcarc ...
- 记录我第一次在Android开发图像处理算法的经历
大概是四月底的时候.有人加我QQ问我是否做能做一些基于图像皮肤检測的算法, 主要是实现对皮肤六项指标: 1. 水分 2. 有份 3. 痤疮与痘痘 4. 色斑与肤 ...
- HDU 4022 Bombing STL 模拟题
人工模拟.. #include<stdio.h> #include<iostream> #include<algorithm> #include<vector ...
- oracle从备份归档日志的方法集中回收
oracle从备份集中抓出归档日志方法 在大连医院遇到这个问题,数据库为归档状态,但归档完成后rman通过crontab自己主动备走归档日志并删除存在系统上的归档日志文件.在RealSync程序停止一 ...
- hdu4705 Y 简单树形DP 2013多校训练第十场 J题
题意:求一棵树中不在一条链中的三个点的对数. 转化一下,用总对数减去在一条链上的三点对数即可. 考虑经过根节点,然后可能是不同的子树中各选一个:或者是子树中选一个,然后当前节点为根的子树以外的节点选一 ...
- jQuery整理笔记文件夹
jQuery整理笔记文件夹 jQuery整理笔记一----jQuery開始 jQuery整理笔记二----jQuery选择器整理 jQuery整理笔记三----jQuery过滤函数 jQuery整理笔 ...
- JavaScript学习之获取URL参数
最近看了几道面试题,其中有一道就是关于写一个方法来获取浏览器地址栏URL查询部分的字段内容.虽然之前看过相关的东西,但感觉有点模糊,所以就又全面的学习一遍,谨以此文记之! 准备知识 在JavaScri ...
- Eddy's mistakes(字母大小写转换)strlwr函数的应用
Problem Description Eddy usually writes articles ,but he likes mixing the English letter uses, for ...
- 使用PHP顶替JS有趣DOM
較简单,我须要把一个导航页的数据整理好写入数据库.一个比較直观的方法是对html文件进行分析.通用的方法是用php的正則表達式来匹配.可是这样做开发和维护都非常困难,代码可读性非常差. 导航页的数据都 ...
- c/cpp中怎样切割字符串,相似于split的功能
在python中,假设要求当前时间的unix时间戳,我特别喜欢这么用: import time timestr = time.time() timestamp = int(timestr.split( ...