楼主: zhanghaze
跳转到指定楼层
上一主题 下一主题
收起左侧

airbnb电面

🔗
pyzhangyi 2017-9-8 01:27:08 | 只看该作者
全局:
最多猜21次的Solution代码如下(包括模拟生成随机数)

  1. import java.util.*;

  2. public class Solutions {

  3.     private static int count = 0;
  4.     private static List<Integer> target = new ArrayList<>();

  5.     public static void main(String[] args) {
  6.         System.out.println(sendAndReceive("start"));
  7.         System.out.println("Result: " + guess());
  8.     }

  9.     // Simulation method, to generate or reset the random number, don't have to focus on it
  10.     public static void reset() {
  11.         target.clear();
  12.         for (int i = 0; i < 4; ++i) {
  13.             target.add((int)(Math.random() * 6) + 1);
  14.         }
  15.         count = 0;
  16.     }

  17.     // Simulation method, don't have to focus it
  18.     public static String sendAndReceive(String str) {
  19.         if (str.toLowerCase().equals("start")) {
  20.             reset();
  21.             return "Ready, target # is " + target.get(0) + target.get(1) + target.get(2) + target.get(3);
  22.         }
  23.         System.out.println("Times of method call: " + ++count + ", coming number: " + str);
  24.         int a = 0;
  25.         List<Integer> copyOfTarget = new ArrayList<>(target);
  26.         List<Integer> t = new ArrayList<>();
  27.         List<Integer> g = new ArrayList<>();

  28.         for (int i = 0; i < 4; ++i) {
  29.             int digit = copyOfTarget.get(i);
  30.             char c = str.charAt(i);

  31.             if (digit == c - '0') ++a;
  32.             else {
  33.                 t.add(digit);
  34.                 g.add(c - '0');
  35.             }
  36.         }

  37.         int size = g.size();
  38.         g.removeAll(t);
  39.         int b = size - g.size();

  40.         return a + " " + b;
  41.     }

  42.     // Solutions
  43.     public static String guess() {
  44.         String base = "1111";
  45.         int first = Integer.parseInt(sendAndReceive(base).split(" ")[0]);
  46.         if (4 == first) return base;
  47.         char[] res = new char[4];

  48.         for (int i = 0; i < 4; ++i) {
  49.             int lastResponse = first;
  50.             char[] chBase = base.toCharArray();
  51.             for (int j = 2; j < 6; ++j) {
  52.                 chBase[i] = (char)('0' + j);
  53.                 int response = Integer.parseInt(sendAndReceive(String.valueOf(chBase)).split(" ")[0]);
  54.                 if (4 == response) return String.valueOf(chBase);
  55.                 if (response != lastResponse) {
  56.                     res[i] = lastResponse > response ? '1' : (char)('0' + j);
  57.                     break;
  58.                 }
  59.                 else {
  60.                     lastResponse = response;
  61.                 }
  62.             }
  63.             if (0 == res[i]) res[i] = '6';
  64.         }

  65.         return String.valueOf(res);
  66.     }
  67. }
复制代码

补充内容 (2017-9-8 01:29):
最多猜17次,不是21次

评分

参与人数 7大米 +22 收起 理由
rushformore1988 + 1 赞
agraynel + 2 很有用的信息!
miao29 + 1 很有用的信息!
尼尼678 + 5 给你点个赞!
Georgeapex + 5 给你点个赞!

查看全部评分

回复

使用道具 举报

🔗
zfzzwz 2017-9-10 11:48:59 | 只看该作者
全局:
pyzhangyi 发表于 2017-9-8 01:27
最多猜21次的Solution代码如下(包括模拟生成随机数)

谢谢您的解释,很有收获!
回复

使用道具 举报

🔗
zfzzwz 2017-9-10 11:50:04 | 只看该作者
全局:
跟server连接部分的细节您可以说一下吗?比如说是用什么和server连接的。
回复

使用道具 举报

🔗
knight0clk 2017-9-15 23:48:13 | 只看该作者
全局:
zhanghaze 发表于 2017-9-7 17:51
我的方法是

猜0000,如果回来

楼主,能详细说说为什么最多21次吗?4个位置,每个位置要尝试0-8,9次,4*9=36。谢谢
回复

使用道具 举报

🔗
knight0clk 2017-9-15 23:49:05 | 只看该作者
全局:
pyzhangyi 发表于 2017-9-8 01:27
最多猜21次的Solution代码如下(包括模拟生成随机数)

你好,之前不是说21次吗?能详细说说为什么最多17次吗?我感觉4个位置,每个位置要尝试0-8,9次,4*9=36。
回复

使用道具 举报

🔗
pyzhangyi 2017-9-16 00:20:15 | 只看该作者
全局:
您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限 或 查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies

评分

参与人数 1大米 +8 收起 理由
海拔2纳米 + 8 很有用的信息!

查看全部评分

回复

使用道具 举报

🔗
janeclub 2017-9-16 02:14:28 | 只看该作者
全局:
您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限 或 查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies
回复

使用道具 举报

🔗
janeclub 2017-9-16 02:15:53 | 只看该作者
全局:
您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限 或 查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies
回复

使用道具 举报

🔗
janeclub 2017-9-16 02:16:46 | 只看该作者
全局:
Server端看起来像是Bull and Cow
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

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