一亩三分地论坛

 找回密码
 获取更多干货,去instant注册!

扫码关注一亩三分地公众号
查看: 3890|回复: 33
收起左侧

Cryptic Studio 家OA,题目不多质量不错,可看可学

[复制链接] |试试Instant~ |关注本帖
chenyy0527 发表于 2015-8-15 11:26:08 | 显示全部楼层 |阅读模式

2015(7-9月) 码农类 硕士 全职@Cryptic Studio - 网上海投 - 在线笔试 |Passfresh grad应届毕业生

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看,没有帐号?获取更多干货,去instant注册!

x
这个公司的OA题好像从来不会变,他们家OA面经其实之前在地里被发过了(http://www.1point3acres.com/bbs/forum.php?mod=viewthread&tid=139479&highlight=cryptic),不过版面有点不清晰,我就把重要的再发一遍好了。第二题想看更多的 test case 可以点那个链接看。
. 鍥磋鎴戜滑@1point 3 acres 鏉ユ簮涓浜.涓夊垎鍦拌鍧.
OA里只有两道题,难度中等,要求5小时做出来,但是事实长代码写的顺手的话不需要那么久。我第一道题花了半个多小时,第二道题一个半小时,这都是包括debug的时间。
之前看网上大家聊起的说5个小时做不完,有点被吓到,但是其实不难。我昨天提交的,今天上午就通知过了,现已安排phone interview下下周,结束后再来发面经给大家!
(如果5个小时写不出,那其实还需要训练自己的码能力). 1point 3acres 璁哄潧

1. Write a function that accepts a string of digits and a target value as input parameters. This function should output the two input values followed by a string with +'s and *'s between the digits so the result of evaluating the mathematical expression is the target value. Pay attention to operator precedence. Note there may be more than one answer, it doesn't matter which one you print.
. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
Examples: . Waral 鍗氬鏈夋洿澶氭枃绔,
"1231231234",11353 -> "12*3+1+23*123*4" .1point3acres缃
"3456237490",1185 -> "3*4*56+2+3*7+490" .鏈枃鍘熷垱鑷1point3acres璁哄潧
"3456237490",9191 -> "no solution"

挺简单的回溯,对每个字符后面可能存在:不操作,插入+,插入*   一共三种情况,操作完算一算。 .鏈枃鍘熷垱鑷1point3acres璁哄潧
需要注意一下溢出的情况,除此之外没啥别的. From 1point 3acres bbs

2. Write a function "void link(char **tiles)" that accepts a list of 'tiles' in the provided format below. It should link the tiles together sequentially in the order they are given, and print out the current count and arrangement of tiles at each step exactly as shown in the example output below, including the note about how far the tile had to be rotated.

A tile is a 2-by-2 square split into quadrants, where each quadrant has a number from 0 to 9. After the first tile, a tile can be legally placed if at least two of its quadrants match quadrants on adjacent tiles horizontally or vertically. A tile cannot be legally placed in a location if it would have fewer than two matching quadrants or has any quadrants that do not match horizontally or vertically. Tiles can be rotated, and tiles can be placed in offset positions as demonstrated with tile 9 in the third example. The inputs are always designed so there is only one place a tile will fit.

看上去难其实非常简单,每个tile测试一下能放哪里就好了,测试过程中需要旋转一下(旋转的函数相当简单吧),放好了就停止搜索,然后打印一下当前的board

Examples: .鐣欏璁哄潧-涓浜-涓夊垎鍦
char *tiles1[] = {
        "11",     // 1. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
        "23",
        "",
        "44",     // 2
        "11",
        "",
        "16",     // 3
        "36",
        "",
        "51",     // 4. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
        "71",
        "",
        "46",     // 5
        "26",
        "",
        "14",     // 6
        "68",
        0};


link(tiles1) prints:. From 1point 3acres bbs

6 tiles
link 1
11
23

link 2
44
11
11
23

link 3
44
11. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
1116
2336

link 4
  44. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
5111
711116
  2336

link 5 // note this tile had to be rotated 180 degrees clockwise
  44.鐣欏璁哄潧-涓浜-涓夊垎鍦
5111
71111662
  233664.鏈枃鍘熷垱鑷1point3acres璁哄潧

link 6 // note this tile had to be rotated 270 degrees clockwise
  4448
511116. From 1point 3acres bbs
71111662. Waral 鍗氬鏈夋洿澶氭枃绔,
  233664

评分

1

查看全部评分

Linzertorte 发表于 2015-9-9 05:07:08 | 显示全部楼层
python作弊大法!
1.jpg
回复 支持 0 反对 1

使用道具 举报

Linzertorte 发表于 2015-9-9 07:17:34 | 显示全部楼层
chenyy0527 发表于 2015-9-9 06:45. 1point 3acres 璁哄潧
那是神马

这个中缀求值用divide-conquer比较简单。 扫描一遍,找到第一个+,然后左右分成两个子问题。找不到+,就找*. +,*都找不到说明是一个数。
回复 支持 1 反对 0

使用道具 举报

Linzertorte 发表于 2015-9-9 07:29:24 | 显示全部楼层
一亩三分地严打"顶""好贴""收藏了"之类的垃圾回复帖!被警告三次,系统会自动封杀ID!

想支持楼主,请点击帖子下方的"好苗""分享""收藏"键,酌情给楼主加大米(系统不扣你自己的分)。
积分不够看不了帖子,请参考论坛导航里的"帮助","新手提纲"里有攒积分指南
  1. #include<iostream>. 鍥磋鎴戜滑@1point 3 acres
  2. #include<string.h>
  3. using namespace std;
  4. int eval_sub(const char *s,const char *t){
  5.         const char *p;
  6.         for(p=s;p<t;p++). From 1point 3acres bbs
  7.                 if(*p=='+') break;.1point3acres缃
  8.         if(p<t) return eval_sub(s,p)+eval_sub(p+1,t);
  9.         for(p=s;p<t;p++)
  10.                 if(*p=='*') break;
  11.         if(p<t) return eval_sub(s,p)*eval_sub(p+1,t);
  12.         int x = 0;
  13.         for(p=s;p<t;p++)
  14.                 x = x*10 + (*p-'0');
  15.         return x;. From 1point 3acres bbs
  16. }
  17. int eval(const char *expr){
  18.     int n = strlen(expr);
  19.     return eval_sub(expr,expr+n);
  20. }
  21. int main(){. Waral 鍗氬鏈夋洿澶氭枃绔,
  22.     cout<<eval("3*4*56+2+3*7+490")<<endl;
  23.     cout<<eval("12*3+1+23*123*4")<<endl;
  24. }
  25.                   
复制代码
回复 支持 1 反对 0

使用道具 举报

霸王 发表于 2015-8-15 11:38:20 | 显示全部楼层
祝找工作顺利~
回复 支持 反对

使用道具 举报

 楼主| chenyy0527 发表于 2015-8-15 11:40:51 | 显示全部楼层

谢谢!!
回复 支持 反对

使用道具 举报

houqingniao 发表于 2015-8-15 12:43:05 | 显示全部楼层
bless lz!
问一下, 这家是干啥的?
回复 支持 反对

使用道具 举报

 楼主| chenyy0527 发表于 2015-8-15 13:08:32 | 显示全部楼层
houqingniao 发表于 2015-8-15 12:43. 1point3acres.com/bbs
bless lz!
问一下, 这家是干啥的?

游戏公司,大概15年历史,100+雇员这样,用的C
回复 支持 反对

使用道具 举报

houqingniao 发表于 2015-8-16 12:00:01 | 显示全部楼层
赞lz.-google 1point3acres

C 现在还真用不了了 哈哈
回复 支持 反对

使用道具 举报

 楼主| chenyy0527 发表于 2015-8-16 12:25:04 | 显示全部楼层
houqingniao 发表于 2015-8-16 12:00
赞lz.
. more info on 1point3acres.com
C 现在还真用不了了 哈哈

我自己是写C++的,电面要求C,我下周末急补一下
回复 支持 反对

使用道具 举报

slm0803 发表于 2015-9-9 03:29:48 | 显示全部楼层
lz 这家电面怎么样?我也收到他们的小秘邮件说要online test,但是问了一下公司不sponsor,于是就不跟他们玩了。
回复 支持 反对

使用道具 举报

Linzertorte 发表于 2015-9-9 04:49:09 | 显示全部楼层
第一题要多少行代码啊?感觉挺长的。还要中缀求值,要双栈扫描吗?
回复 支持 反对

使用道具 举报

 楼主| chenyy0527 发表于 2015-9-9 06:45:07 | 显示全部楼层
slm0803 发表于 2015-9-9 03:29
lz 这家电面怎么样?我也收到他们的小秘邮件说要online test,但是问了一下公司不sponsor,于是就不跟他们 ...

我都不知道不sponsor ,他们家电面问了不少基层的东西,算法问的不多
回复 支持 反对

使用道具 举报

 楼主| chenyy0527 发表于 2015-9-9 06:45:31 | 显示全部楼层
Linzertorte 发表于 2015-9-9 04:49. Waral 鍗氬鏈夋洿澶氭枃绔,
第一题要多少行代码啊?感觉挺长的。还要中缀求值,要双栈扫描吗?

第一题大概60行左右,我是用回溯
回复 支持 反对

使用道具 举报

 楼主| chenyy0527 发表于 2015-9-9 06:45:39 | 显示全部楼层

那是神马
回复 支持 反对

使用道具 举报

Linzertorte 发表于 2015-9-9 07:16:15 | 显示全部楼层

你看看右边。用python写第一题12行就行了。
回复 支持 反对

使用道具 举报

 楼主| chenyy0527 发表于 2015-9-9 11:15:59 | 显示全部楼层
Linzertorte 发表于 2015-9-9 07:17
这个中缀求值用divide-conquer比较简单。 扫描一遍,找到第一个+,然后左右分成两个子问题。找不到+,就找 ...

对哦,好办法,我还是用的stack,弱弱的=。=
回复 支持 反对

使用道具 举报

 楼主| chenyy0527 发表于 2015-9-9 11:17:08 | 显示全部楼层
Linzertorte 发表于 2015-9-9 07:29
一亩三分地严打"顶""好贴""收藏了"之类的垃圾回复帖!被警告三次,系统会自动封杀ID!
. 1point3acres.com/bbs
想支持楼主,请点 ...
. 1point 3acres 璁哄潧
代码很棒诶,虽然前面那段关于大米的没怎么看懂0.0
但是好短好简洁,瞬间觉得我的代码弱爆了
回复 支持 反对

使用道具 举报

Linzertorte 发表于 2015-9-9 11:35:37 | 显示全部楼层
chenyy0527 发表于 2015-9-9 11:17. more info on 1point3acres.com
代码很棒诶,虽然前面那段关于大米的没怎么看懂0.0
但是好短好简洁,瞬间觉得我的代码弱爆了

楼主会不会python...
  1. def get_next(xs):
  2.   if xs=='':
  3.     yield ''
  4.     return
  5.   for x in get_next(xs[1:]):
  6.     for h in ['','+','*']:
  7.       yield h+xs[:1]+x
  8. def f(xs,val):
  9.   for x in get_next(xs[1:]):. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
  10.     if eval(xs[:1]+x)==val:
  11.        return xs[:1]+x
  12.   return "no solution"

  13. print f('1234',10). Waral 鍗氬鏈夋洿澶氭枃绔,
  14. print f("1231231234",11353)
  15. print f("3456237490",1185)
复制代码
回复 支持 反对

使用道具 举报

 楼主| chenyy0527 发表于 2015-9-10 11:37:19 | 显示全部楼层
Linzertorte 发表于 2015-9-9 11:35
楼主会不会python...

.1point3acres缃并不会,但是看代码无所谓,都能看得懂
回复 支持 反对

使用道具 举报

本版积分规则

请点这里访问我们的新网站:一亩三分地Instant.

Instant搜索更强大,不扣积分,内容组织的更好更整洁!目前仍在beta版本,努力完善中!反馈请点这里

关闭

一亩三分地推荐上一条 /5 下一条

手机版|小黑屋|一亩三分地论坛声明 ( 沪ICP备11015994号 )

custom counter

GMT+8, 2017-1-21 14:39

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

快速回复 返回顶部 返回列表