一亩三分地论坛

 找回密码
 Sign Up 注册获取更多干货
码农求职神器Triplebyte:
不用海投,内推多家公司面试
Airbnb 数据科学职位
in analytics and inference
游戏初创公司
招聘工程师、Designer和游戏策划
游戏初创公司DreamCraft招聘工程师、UIUX Designer和游戏策划
电商初创公司Good Days
招聘SDE/UI/TPM实习生
把贵司招聘信息放这里
查看: 8207|回复: 33
收起左侧

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

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

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

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

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

x
这个公司的OA题好像从来不会变,他们家OA面经其实之前在地里被发过了(http://www.1point3acres.com/bbs/forum.php?mod=viewthread&tid=139479&highlight=cryptic),不过版面有点不清晰,我就把重要的再发一遍好了。第二题想看更多的 test case 可以点那个链接看。

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. . 鍥磋鎴戜滑@1point 3 acres

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. visit 1point3acres.com for more.

Examples:
char *tiles1[] = {. visit 1point3acres.com for more.
        "11",     // 1
        "23",
        "",
        "44",     // 2
        "11",
        "",
        "16",     // 3
        "36",
        "",
        "51",     // 4
        "71",
        "",
        "46",     // 5
        "26",
        "",
        "14",     // 6
        "68",
        0};


link(tiles1) prints:

6 tiles
link 1
11. from: 1point3acres.com/bbs
23. 鍥磋鎴戜滑@1point 3 acres

link 2
44. From 1point 3acres bbs
11
11
23

. 鍥磋鎴戜滑@1point 3 acreslink 3. more info on 1point3acres.com
44
11
1116
2336. more info on 1point3acres.com

link 4
  44
5111
711116
  2336. 1point3acres.com/bbs

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
511116. Waral 鍗氬鏈夋洿澶氭枃绔,
71111662
  233664
. 1point 3acres 璁哄潧

评分

1

查看全部评分

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

使用道具 举报

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

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

使用道具 举报

Linzertorte 发表于 2015-9-9 07:29:24 | 显示全部楼层
一亩三分地严打"顶""好贴""收藏了"之类的垃圾回复帖!被警告三次,系统会自动封杀ID!
.鏈枃鍘熷垱鑷1point3acres璁哄潧
想支持楼主,请点击帖子下方的"好苗""分享""收藏"键,酌情给楼主加大米(系统不扣你自己的分)。.鏈枃鍘熷垱鑷1point3acres璁哄潧
积分不够看不了帖子,请参考论坛导航里的"帮助","新手提纲"里有攒积分指南
  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;. 鍥磋鎴戜滑@1point 3 acres
  6.         for(p=s;p<t;p++)
  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++)
  14.                 x = x*10 + (*p-'0');
  15.         return x;
  16. }
  17. int eval(const char *expr){.1point3acres缃
  18.     int n = strlen(expr);
  19.     return eval_sub(expr,expr+n);. 鍥磋鎴戜滑@1point 3 acres
  20. }
  21. int main(){
  22.     cout<<eval("3*4*56+2+3*7+490")<<endl;. from: 1point3acres.com/bbs
  23.     cout<<eval("12*3+1+23*123*4")<<endl;. From 1point 3acres bbs
  24. }
  25.                   
复制代码
回复 支持 1 反对 0

使用道具 举报

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

使用道具 举报

 楼主| chenyy0527 发表于 2015-8-15 11:40:51 | 显示全部楼层
霸王 发表于 2015-8-15 11:38. visit 1point3acres.com for more.
祝找工作顺利~

谢谢!!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

游戏公司,大概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
赞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
第一题要多少行代码啊?感觉挺长的。还要中缀求值,要双栈扫描吗?
.1point3acres缃
第一题大概60行左右,我是用回溯
回复 支持 反对

使用道具 举报

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

那是神马
回复 支持 反对

使用道具 举报

Linzertorte 发表于 2015-9-9 07:16:15 | 显示全部楼层
chenyy0527 发表于 2015-9-9 06:45. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
那是神马

你看看右边。用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!

想支持楼主,请点 ...
. Waral 鍗氬鏈夋洿澶氭枃绔,
代码很棒诶,虽然前面那段关于大米的没怎么看懂0.0
但是好短好简洁,瞬间觉得我的代码弱爆了
回复 支持 反对

使用道具 举报

Linzertorte 发表于 2015-9-9 11:35:37 | 显示全部楼层
chenyy0527 发表于 2015-9-9 11:17. from: 1point3acres.com/bbs
代码很棒诶,虽然前面那段关于大米的没怎么看懂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):. 1point 3acres 璁哄潧
  9.   for x in get_next(xs[1:]):.鏈枃鍘熷垱鑷1point3acres璁哄潧
  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...

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

使用道具 举报

本版积分规则

关闭

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

手机版|小黑屋|一亩三分地论坛声明

custom counter

GMT+8, 2018-1-18 18:12

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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