一亩三分地论坛

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

扫码关注一亩三分地公众号
查看: 3528|回复: 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 可以点那个链接看。. from: 1point3acres.com/bbs

OA里只有两道题,难度中等,要求5小时做出来,但是事实长代码写的顺手的话不需要那么久。我第一道题花了半个多小时,第二道题一个半小时,这都是包括debug的时间。
之前看网上大家聊起的说5个小时做不完,有点被吓到,但是其实不难。我昨天提交的,今天上午就通知过了,现已安排phone interview下下周,结束后再来发面经给大家!
(如果5个小时写不出,那其实还需要训练自己的码能力)

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:
"1231231234",11353 -> "12*3+1+23*123*4"
"3456237490",1185 -> "3*4*56+2+3*7+490"
"3456237490",9191 -> "no solution"

挺简单的回溯,对每个字符后面可能存在:不操作,插入+,插入*   一共三种情况,操作完算一算。
需要注意一下溢出的情况,除此之外没啥别的

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.鏈枃鍘熷垱鑷1point3acres璁哄潧
        "71",. visit 1point3acres.com for more.
        "",
        "46",     // 5
        "26",
        "",
        "14",     // 6
        "68",
        0};


link(tiles1) prints:

6 tiles
link 1.鏈枃鍘熷垱鑷1point3acres璁哄潧
11
23
. 鍥磋鎴戜滑@1point 3 acres
link 2
44. more info on 1point3acres.com
11-google 1point3acres
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

link 6 // note this tile had to be rotated 270 degrees clockwise
  4448. visit 1point3acres.com for more.
511116. 鍥磋鎴戜滑@1point 3 acres
71111662
  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. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
那是神马

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

使用道具 举报

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

想支持楼主,请点击帖子下方的"好苗""分享""收藏"键,酌情给楼主加大米(系统不扣你自己的分)。. more info on 1point3acres.com
积分不够看不了帖子,请参考论坛导航里的"帮助","新手提纲"里有攒积分指南
  1. #include<iostream>
  2. #include<string.h>
  3. using namespace std;
  4. int eval_sub(const char *s,const char *t){
  5.         const char *p;.1point3acres缃
  6.         for(p=s;p<t;p++).鏈枃鍘熷垱鑷1point3acres璁哄潧
  7.                 if(*p=='+') break;
  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++). 1point3acres.com/bbs
  14.                 x = x*10 + (*p-'0');
  15.         return x;
  16. }
  17. int eval(const char *expr){
  18.     int n = strlen(expr);
    .鐣欏璁哄潧-涓浜-涓夊垎鍦
  19.     return eval_sub(expr,expr+n);
  20. }
  21. int main(){
  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
bless lz!
问一下, 这家是干啥的?

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

使用道具 举报

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

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

使用道具 举报

 楼主| chenyy0527 发表于 2015-8-16 12:25:04 | 显示全部楼层
houqingniao 发表于 2015-8-16 12:00.鏈枃鍘熷垱鑷1point3acres璁哄潧
赞lz.

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
第一题要多少行代码啊?感觉挺长的。还要中缀求值,要双栈扫描吗?
鏉ユ簮涓浜.涓夊垎鍦拌鍧.
第一题大概60行左右,我是用回溯
回复 支持 反对

使用道具 举报

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

那是神马
回复 支持 反对

使用道具 举报

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

. 1point3acres.com/bbs你看看右边。用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!
. from: 1point3acres.com/bbs
想支持楼主,请点 ...

代码很棒诶,虽然前面那段关于大米的没怎么看懂0.0.鐣欏璁哄潧-涓浜-涓夊垎鍦
但是好短好简洁,瞬间觉得我的代码弱爆了
回复 支持 反对

使用道具 举报

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

楼主会不会python...
  1. def get_next(xs):. From 1point 3acres bbs
  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:]):. Waral 鍗氬鏈夋洿澶氭枃绔,
  10.     if eval(xs[:1]+x)==val:
  11.        return xs[:1]+x
  12.   return "no solution"

  13. print f('1234',10)
  14. print f("1231231234",11353)
  15. print f("3456237490",1185)
复制代码
回复 支持 反对

使用道具 举报

 楼主| chenyy0527 发表于 2015-9-10 11:37:19 | 显示全部楼层
Linzertorte 发表于 2015-9-9 11:35. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
楼主会不会python...

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

使用道具 举报

本版积分规则

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

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

关闭

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

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

custom counter

GMT+8, 2016-12-11 14:46

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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