কিউবের কিনারায় এলোমেলো হাঁটা


35

একটি পিপীলিকা একটি ঘনকের এক কোণে স্থাপন করা হয় এবং চলাচল করতে পারে না। একটি মাকড়সা বিপরীত কোণ থেকে শুরু হয়, এবং সমান সম্ভাবনা সাথে কোনও দিকের কিউবের কিনারা ধরে এগিয়ে যেতে পারে । গড়ে, মাকড়সা পিঁপড়ায় উঠতে কত পদক্ষেপের প্রয়োজন হবে?(x,y,z)1/3

(এটি হোমওয়ার্ক নয়, এটি একটি সাক্ষাত্কারের প্রশ্ন ছিল।)


7
বাড়ির কাজ? এ পর্যন্ত কি কি চেষ্টা করেছ?
অ্যাড্রিয়ান

মার্কভ চেইন সম্পর্কে, এখানে একটি দুর্দান্ত ইনট্রো সেটোসা.আইও
07/

1
সাধারণত এই ধরণের রুটিন বুক ওয়ার্কটিকে self-studyট্যাগ সহ চিহ্নিত করতে হবে এবং তার ট্যাগ উইকিতে থাকা নির্দেশিকা অনুসরণ করতে হবে । দয়া করে এই প্রশ্নটি সম্পাদনা করুন এবং ভবিষ্যতের অনুরূপ প্রশ্নগুলিতে এটি অন্তর্ভুক্ত করুন
Glen_b -Rininstate মনিকা

4
@ গ্যারেথএমসি কাউন - এটি কোনও সাক্ষাত্কারের প্রশ্ন ছিল না।
এলিজাবেথ সুসান জোসেফ

@Alesc অনুসরণ করে আমি একটি জাভাস্ক্রিপ্ট প্লঙ্কার তৈরি করেছি। plnkr.co/edit/jYQVDI
abbaf33f

উত্তর:


32

আমি সমস্যাটিকে মার্কভ চেইন হিসাবে মডেলিং করার পরামর্শ দিচ্ছি যেখানে প্রতিটি রাজ্য মাকড়সা এবং পিঁপড়ার মধ্যে দূরত্ব উপস্থাপন করে। এই ক্ষেত্রে আমরা 4 সম্ভব রাজ্যের আছে Si দূরত্বের হিসাবে i হতে পারে {0,1,2,3}

মাকড়সা যখন ঘনক্ষেত্রের বিপরীত কোণে থাকে তখন এটি পিপড়া থেকে 3 ধাপের দূরে থাকে। এটি অবস্থায় ।S3

রূপান্তরটি ম্যাট্রিক্স নির্মাণের ।P

  • যদি আমরা একটি ঘনক্ষেত্র আঁকি তবে আমরা দেখতে পাচ্ছি যে যখন আমরা রাজ্য এ থাকি তখন প্রতিটি আন্দোলন মাকড়সা এবং পিঁপড়ার মধ্যে দূরত্ব 2 টি ধাপে হ্রাস করে। সুতরাং, যখন আমরা রাষ্ট্র হয় আমরা রাষ্ট্র থেকে সরানো সম্ভাব্যতা 1।S3S3S2

  • আমরা যখন রাষ্ট্র হয় , আমরা রাষ্ট্র ফিরে যেতে পারেন প্রান্ত আমরা সেখান থেকে আগত ব্যবহার বা আমরা কেবল এক ধাপ দূরত্ব হ্রাস করতে পারেন যদি আমরা দুটি অন্য প্রান্ত চয়ন। সুতরাং, যখন আমরা রাষ্ট্র হয় আমরা রাষ্ট্রের কাছে স্থানান্তর করতে পারেন সম্ভাব্যতা 2/3 এবং রাষ্ট্র সম্ভাব্যতা 1/3 সঙ্গে।S2S3S2S1S3

  • আমরা যখন স্থিতিতে থাকি তখন আমরা তিনটি সম্ভাব্য প্রান্তের একটি ব্যবহার করে স্থিতিতে যেতে পারি । যদি আমরা অন্য দুটি ব্যবহার করি তবে আমরা ফিরে যাব । সুতরাং, যখন আমরা রাষ্ট্র হয় আমরা রাষ্ট্রের কাছে স্থানান্তর করতে পারেন সম্ভাব্যতা 1/3 এবং রাষ্ট্র সম্ভাব্যতা 2/3 সঙ্গে।S1S0S2S1S0S2

  • যখন আমরা এস টি-তে পাই, আমরা সেখানে থাকি কারণ এটি আমাদের লক্ষ্য। একটি শোষণকারী রাষ্ট্র।S0S0

P=[PS3S3PS3S2PS3S1PS3S0PS2S3PS2S2PS2S1PS2S0PS1S3PS1S2PS1S1PS1S0PS0S3PS0S2PS0S1PS0S0]=[01001/302/3002/301/30001]

এই তিন অস্থায়ী রাজ্যের (সাথে একটা শুষে মার্কভ চেইন হয় , , ) এবং শুষে রাজ্য ( )।S3S2S1S0

তত্ত্ব অনুসারে, সঙ্গে একটি মার্কভ চেন রূপান্তরটি ম্যাট্রিক্স অস্থায়ী রাজ্য এবং শুষে রাজ্যের পুনর্লিখিত করা যেতে পারে: tr

P=[QtR0r×tIr]

যেখানে একটি ম্যাট্রিক্স যা কিছু ক্ষণস্থায়ী অবস্থা থেকে অন্য ক্ষণস্থায়ী অবস্থানে রূপান্তরিত হওয়ার সম্ভাবনা দেখায়, অন্যদিকে of একটির মধ্যে স্থানান্তরিত হওয়ার সম্ভাবনা সহ একটি ম্যাট্রিক্স অস্থায়ী এক যুক্তরাষ্ট্রের শুষে যুক্তরাষ্ট্র। পরিচয় ম্যাট্রিক্স আমাদের দেখায় যে যখন কোনও শোষণকারী অবস্থা পৌঁছে যায় তখন সেই অবস্থা থেকে কোনও পরিবর্তন হয় না। সব zeros ম্যাট্রিক্স যেমন যে কোন কোন রূপান্তরটি হয় ব্যাখ্যা করা যেতে পারে কোন রাজ্যের শুষেQtt×tRt×rtrIrr0r×trt ক্ষণস্থায়ী রাষ্ট্র

এর এন্ট্রি একটি রাষ্ট্র থেকে রূপান্তরের সম্ভাবনা প্রতিনিধিত্ব করে একটি রাষ্ট্র ঠিক এক ধাপ হবে। পদক্ষেপের সম্ভাব্যতা পেতে আমাদের এর প্রবেশ প্রয়োজন । সব জন্য সামিং , আমরা একটি ম্যাট্রিক্স যে তার মধ্যে রয়েছে পেতে এন্ট্রি অস্থায়ী রাষ্ট্র সফর প্রত্যাশিত সংখ্যা অস্থায়ী রাষ্ট্র থেকে শুরু করার পরে ।(i,j)Qtijk(i,j)Qtkk(i,j)ji

k=0Qtk=(ItQt)1

শোষিত হচ্ছে না হওয়া পর্যন্ত ধাপের নম্বর পেতে করার জন্য, শুধু প্রতিটি সারির মান যোগফল । এটি দ্বারা প্রতিনিধিত্ব করা যেতে পারে(ItQt)1

t=(ItQt)11

যেখানে হল 1 এর সমান একটি কলাম ভেক্টর।1

আসুন এটি আমাদের ক্ষেত্রে প্রয়োগ করুন:

উপরে উল্লিখিত হিসাবে, আমাদের ক্ষেত্রে আমাদের = 3 ক্ষণস্থায়ী অবস্থা এবং = 1 শোষক অবস্থা রয়েছে, সুতরাং: tr

Qt=[0101/302/302/30]R=[001/3]

প্রত্যাশিত সংখ্যার পরিদর্শন সহ ম্যাট্রিক্স হ'ল

(ItQt)1=[2.54.531.54.53133]

এই ম্যাট্রিক্স নিম্নলিখিত হিসাবে ব্যাখ্যা করা যেতে পারে। থেকে রাষ্ট্র থেকে শুরু করে আগে এ শোষিত পেয়ে আমরা গড়ে পরিদর্শন, 2.5 গুণ, 4.5 গুণ, এবং 3 বার।S3S0S3S2S1

রাজ্য থেকে রাষ্ট্র প্রত্যাশিত সংখ্যার পদক্ষেপগুলি নিম্নলিখিত ভেক্টরের প্রথম উপাদান দ্বারা প্রদত্ত:S3S0

t=[2.54.531.54.53133][111]=[1097].

দ্বিতীয় ও তৃতীয় উপাদান পদক্ষেপ প্রত্যাশিত সংখ্যা হয় যদি আমরা থেকে শুরু এবং যথাক্রমে।tS0S2S1


এমসিএমসি কী তা আমার কোনও ধারণা নেই। আমাকে এটি পড়তে হবে এবং তারপরে আপনার সমাধানটি পরীক্ষা করতে হবে। এমন কোনও ভাল এমএমসিসি ব্যাখ্যা রয়েছে যা আপনার সমাধানটির প্রশংসা করে?
এলিজাবেথ সুসান জোসেফ

10
@ এলিজাবেথসুসান জোসেফ নোট করুন যে মার্কোভ চেইন এবং এমসিএমসি (মার্কভ চেইন মন্টি কার্লো) দুটি স্বতন্ত্র ধারণা (যদিও এমসিএমসি মার্কভ চেইনের উপর ভিত্তি করে)। এই উত্তরটি কোনও কিছুর জন্য MCMC ব্যবহার করে না। সুতরাং আপনি সম্ভবত এমসএমসি সম্পর্কে নয়, মার্কভ চেইন সম্পর্কে ভাল ব্যাখ্যা সন্ধান করছেন।
জুহো কোক্কলা

tiagotvv আপনার ব্যাখ্যাটি ট্রানজিশন ম্যাট্রিক্স পি , পরিমাণ আর এর অর্থ এবং কলাম ভেক্টরের উচ্চতার সংজ্ঞা এবং ব্যাখ্যা দিয়ে উন্নত হবে । ভেক্টর টি এর পরবর্তী উপাদানগুলির অর্থের জন্য বোনাস পয়েন্ট । :)
অ্যালেক্সিস

@ জুহোকোকালা - ধন্যবাদ আমি তারপরে মার্কভ চেইনের ব্যাখ্যাগুলি দেখব।
এলিজাবেথ সুসান জোসেফ

@ অ্যালেক্সিস আমি ম্যাট্রিক এবং ভেক্টর সম্পর্কিত কিছু ব্যাখ্যা যুক্ত করেছি।
tiagotvv

21

যাক প্রত্যাশিত ধাপের সংখ্যা হতে। যাক কোনো কোণ মাকড়সা এবং উৎপত্তি সংলগ্ন থেকে প্রত্যাশিত ধাপের সংখ্যা হতে পিপীলিকা জন্য Ditto।xx1x0

তারপরে এবং । যেহেতু x=1+x1x0=1+23x1

x1=1+23x0+13x=1+23x0+13+13x1

আমরা সেই পেয়েছি । সুতরাং that বোঝায় যে এবং ।x1=x0+2x0=1+23x0+43x0=7x1=9

আমরা হিসাবে আমাদের উত্তর পাই ।x=10

সম্পাদনা:

যদি আমরা স্থানাঙ্কগুলি দিয়ে ঘনকটি আঁকি তবে হল মাকড়সার শুরুর অবস্থান এবং অবস্থান is(x,y,z)111000

মাকড়সা , বা চলে যেতে পারে ।011101110

ঘনক্ষেত্র প্রতিসাম্য দ্বারা এই পিপীলিকা বলে আশা করা পদক্ষেপ, দ্বারা প্রকাশ একই সংখ্যক থাকতে হবে । থেকে , আমরা হয় ফিরে যেতে পারি (সম্ভাব্যতা ) বা (সম্ভাব্যতা ) আমরা কোন অবস্থায় থাকব তার উপর নির্ভর করে আমরা , , পয়েন্টগুলির একটিতে যেতে পারি।x1x11/32/3001100010

আবার, প্রতিসাম্য দ্বারা, এই পয়েন্টগুলির একই পরিমাণে প্রত্যাশিত পদক্ষেপ থাকবে যা আমরা বলি । এইসব অবস্থান থেকে আমরা সম্ভাব্যতা সঙ্গে এক ধাপ লক্ষ্য পৌঁছতে পারে বা পিছনে এক হয়ে যেতে সম্ভাব্যতা সঙ্গে -positions । এর অর্থ এই যে ।x01/3x12/3x0=131+23(1+x1)=1+23x1


আপনি কি আরও উত্তর উত্তর দিতে পারেন? দয়া করে সাধারণ পদে ব্যাখ্যা করুন :)
এলিজাবেথ সুসান জোসেফ

17

এটি মনে করার জন্য একটি দুর্দান্ত বিমূর্তি হ'ল:

পিঁপড়ার অবস্থান এবং স্পাইডার ( 1 , 1 , 1 ) হিসাবে ভাবুন , এখন মাকড়সাটি যে প্রতিটি পদক্ষেপ করতে পারে তা মূলত 1 0 বা 0 1 থেকে তিনটি উপাদানের মধ্যে একটিতে পরিবর্তন করতে পারে । সুতরাং প্রশ্ন হয়ে যায়:(0,0,0)(1,1,1)1001

If I randomly switch bits in (1,1,1) after how many steps in average do I get 0,0,0

আমরা দেখি সবচেয়ে সংক্ষিপ্ততম রাস্তাটি 3 টি সুইচ। যেহেতু কোন বিট দিয়ে আমি এটি শুরু করার সম্ভাবনা হ'ল তা বিবেচনা করে না 1 * 2/3 * 1/3 = 2/9। আমরা যদি 1 টি ভুল করে থাকি (1 তে কিছুটা পিছনে স্যুইচ করুন) আমাদের 5 টি পদক্ষেপের প্রয়োজন হবে। এবং একটি ভুল করার সম্ভাবনা 7/9 - আমরা যদি কেবল একটি ভুল করতে চাই তবে আমাদের সেখান থেকে ফিরে এসে এখনই সব কিছু করতে হবে - সুতরাং 5 টি পদক্ষেপের ফলে ঠিক 1 টি ভুল 7/9 * 2/9করার সুযোগ এবং সুযোগ 2 টি ভুল করে ওরফে steps টি ধাপ (7/9)² * 2/9এবং তাই on

সুতরাং ধাপের প্রত্যাশিত গড় সংখ্যার সূত্রটি হ'ল:

E(steps)=n=0(3+2n)29(79)n=10

Your solution is some what confusing. What is this formula? what is n here?
Elizabeth Susan Joseph

5
It is actually the shortest and cleanest solution. The solution is in the form of an infinite sum of numbers from zero to infinity and n is the current integer in that infinite sum.
alesc

This is really nice! My answer is similar, but breaks up the sequence of switches into pairs - which lets me expectate a geometric variable (or alternatively, sum a geometric series) rather than sum an arithmetico-geometric series. That's the only substantive difference: it doesn't matter much whether one takes "first three switches, then subsequent pairs" (as you did) or "first switch, then subsequent pairs" (as I did), since unless the fly is caught in 3 switches, then either way you're dealing with one odd and two even parities.
Silverfish

16

Just to compliment tiagotvv's answer:

I don't naturally think of these kinds of problems as matrices (even though they are). I have to draw it out, which I've done below. You can see that there are 3 places to move from S, all of which are As. From any A, you can either return to the S, or move to one of two Bs. From any B, you can move to the E, or to one of two As. This all translates to the transition matrix given by tiagotvv, which can also be drawn in graph form.

enter image description here

Because I am terrible at math, I would just try to simulate your problem. You can do this with the markovchain package in R.

  library(markovchain)
  library(ggplot2)

  # Create a markovchain object, given the states and their transition matrix

  mcCube <- new("markovchain", 
                states = c("S", "A", "B", "E"),
                transitionMatrix = matrix(data = c(0,   1,   0,   0,
                                                   1/3, 0,   2/3, 0,
                                                   0,   2/3, 0,   1/3,
                                                   0,   0,   0,   1), 
                                          byrow = T, nrow = 4),
                name = "cube")

  # The following code calcuates the probability of landing on E after taking
  # between 1 and 100 steps from the start, given the above set of transition
  # probabilities.

  start <- c(1, 0, 0, 0)

  list <- list()

  for (i in 1:100){

    list[[i]] <- (start * mcCube^i)[4] 

  }

   a <- do.call(rbind, list)

   data <- data.frame(propE = a, 
                      steps = c(1:100))

   ggplot(data, aes(x = steps, y = propE)) +
    geom_line(size = 1) +
    ylab("Probability you reached the spider") +
    xlab("Number of steps taken") +
    theme_bw() +
    theme(panel.grid.minor = element_blank())

enter image description here

  # This code simulates 1000 different applications of the markov chain where you 
  # take 1000 steps, and records the step at which you landed on E

  list <- list()
  for (i in 1:1000) {


    b <- rmarkovchain(n = 1000, object = mcCube, t0 = "S", include.t0 = T)

    list[[i]] <- 1001 - length(b[b == "E"])

  }

  data <- as.data.frame(do.call(rbind, list))

  ggplot(data, aes(x = V1)) +
    geom_density(fill = "grey50", alpha = 0.5) +
    geom_vline(aes(xintercept = mean(V1))) +
    ylab("Density") +
    xlab("Number of steps to reach E") +
    theme_bw() +
    theme(panel.grid.minor = element_blank())

  mean(data$V1)  # ~10 is the average number of steps to reach E in this set of
                 # simulations

enter image description here

tiagotvv's answer can be calcuated in R as:

q = matrix(c(0,   1,   0,   
             1/3, 0,   2/3, 
             0,   2/3, 0), byrow = T, nrow = 3)


(solve(diag(3) - q) %*% c(1, 1, 1))[1] # = 10

11

Parity considerations give a very clean solution, using surprisingly simple machinery: no Markov chains, no iterated expectations, and only high school level summations. The basic idea is that if the spider has moved an even number of times in the x direction, it has returned to its original x coordinate so can't be at the ant's position. If it has moved an odd number of times in the x direction, then its x coordinate matches the ant's. Only if it has moved an odd number of times in all three directions will it match the x, y and z coordinates of the ant.

Initially the spider has made zero moves in any of the three directions, so the parity for each direction is even. All three parities need to be flipped to reach the ant.

After the spider's first move (let's label that direction x), exactly one direction has odd parity and the other two (y and z) are even. To catch the ant, only those two parities need to be reversed. Since that can't be achieved in an odd number of subsequent moves, from now on we consider pairs of moves. There are nine possible combinations for the first paired move:

(x,x),(x,y),(x,z),(y,x),(y,y),(y,z),(z,x),(z,y),or(z,z)

We need to move in the y and z directions to reach the ant after one paired move, and two out of nine combinations will achieve this: (y,z) and (z,y) would ensure all three parities are odd.

The other seven combinations leave one odd and two even parities. The three repeated moves, (x,x), (y,y) or (z,z), leave all parities unchanged so we still require one y and one z movement to reach the ant. The other pairs contain two distinct moves, including one in the x direction. This switches the parity of x and one of the other parities (either y or z) so we are still left with one odd and two even parities. For instance the pair (x,z) leaves us needing one more x and one more y to reach the ant: an equivalent situation (after relabelling of axes) to where we were before. We can then analyse the next paired move in the same way.

In general paired moves start with one odd and two even parities, and will either end with three odd parities (with probability 29) and the immediate capture of the ant, or with one odd and two even parities (with probability 79) which returns us to the same situation.

Let M be the number of paired moves required to reach the ant. Clearly M follows the geometric distribution on the support {1,2,3,} with probability of success p=29 so has mean E(M)=p1=92=4.5. Let N be the total number of moves required, including the initial move and the M subsequent paired moves. Then N=2M+1 so, applying linearity of expectations, E(N)=2E(M)+1=2×4.5+1=10.

Alternatively you might note P(Mm)=(79)m1 and apply the well-known formula for the mean of a discrete distribution taking only non-negative integer values, E(M)=m=1P(Mm). This gives E(M)=m=1(79)m1 which is a geometric series with first term a=1 and common ratio r=79 so has sum a1r=117/9=12/9=92. We can then take E(N) as before.

Comparison to Markov chain solutions

How might I have spotted this from the Markov chain transition matrix? Using @DLDahly's notation, the states in the transition matrix correspond to my description of the number of the number of directions with odd parity.

Spider hunting ant in cube

The one-step transition matrix is

P=[PSSPSAPSBPSEPASPAAPABPAEPBSPBAPBBPBEPESPEAPEBPEE]=[01001/302/3002/301/30001]

The first row show us that after one movement, the spider is guaranteed to be in state A (one odd and two even parities). The two-step transition matrix is:

P(2)=P2=[1/302/3007/902/92/904/91/30001]

The second row shows us that once the spider has entered state A, in two moves time it has either returned to state A with probability 7/9 or has reached state E (all odd parities) and captured the ant, with probabilty 2/9. So having reached state A, we see from the two-step transition matrix that the number of two-step moves required can be analysed using the geometric distribution as above. This isn't how I found my solution, but it is sometimes worth calculating the first few powers of the transition matrix to see if a useful pattern like this can be exploited. I have occasionally found this to give simpler solutions than having to invert a matrix or perform an eigendecomposition by hand - admittedly something that is only really relevant in an exam or interview situation.


2

I have written a short Java program to answer your question numerically. The traversing of the spider is truly random, meaning that it can also traverse in cycles before getting to the ant.

However, you did not defined the term "opposite corner", so I have two different scenarios. Opposite as in across the same plane or as across the cube. In the first scenario, the shortest path is 2 steps, and 3 steps in the second scenario.

I hava used 100 million repeats and the results are the following:

-- First scenario --
Steps sum: 900019866
Repeats: 100000000
Avg. step count: 9.00019866

-- Second scenario --
Steps sum: 1000000836
Repeats: 100000000
Avg. step count: 10.00000836

Source code:

import java.util.Random;
import java.util.concurrent.atomic.AtomicLong;
import java.util.stream.IntStream;

public class ProbabilityQuizSpider {

    // Edges of the cube
    private static final int[][] EDGES = new int[][] {
            {1, 3, 7}, // corner 0
            {0, 2, 4}, // corner 1
            {1, 3, 5}, // corner 2
            {0, 2, 6}, // corner 3
            {1, 5, 7}, // corner 4
            {2, 4, 6}, // corner 5
            {3, 5, 7}, // corner 6
            {0, 4, 6}  // corner 7
    };

    private static final int START = 0; // Spider
    private static final int FINISH = 5; // Ant
    private static final int REPEATS = (int) Math.pow(10, 8);

    public static void main(String[] args) {

        final Random r = new Random();
        final AtomicLong stepsSum = new AtomicLong();

        IntStream.range(0, REPEATS).parallel().forEach(i -> {

            int currentPoint = START;
            int steps = 0;

            do {

                // Randomly traverse to next point
                currentPoint = EDGES[currentPoint][r.nextInt(3)];

                // Increase number of steps
                steps++;

            } while(currentPoint != FINISH);

            stepsSum.addAndGet(steps);

        });

        // Results
        System.out.println("Steps sum: " + stepsSum.get());
        System.out.println("Repeats: " + REPEATS);
        System.out.println("Avg. step count: " + (((double) stepsSum.get()) / ((double) REPEATS)));

    }

}

EDIT: fixed a typo in the script (and also updated the results)


2
I think your edges are wrong. Corner 3 has 7 in its list, but corner 7 doesn't have 3 in its list. (I suggest that the Right Way to map the vertices to the numbers 0..7 is to say that each bit position corresponds to one axis, so that traversing an edge equals XOR with 1, 2, or 4.)
Gareth McCaughan

1
Thank you for comment. I have made a typo when defining corner #3, it should be {0, 2, 6}. I have re-run the program and got the following result: 10.00000836 steps for traversing from corner #0 to corner #5 (body diagonal of the cube). This is also consistent with @Hunaphu.
alesc

Yup, much better.
Gareth McCaughan

2

I solved your conundrum via Monte Carlo simulations (n=104) and obtained mean(steps)10.

Monte Carlo Simulation ($n = 10^4$)

Here is the R code I used:

ant = c(0,0,0) # ant's coordinates 

sim = 1e4 # number of MC simulations
steps = numeric() # initialize array of steps

for (i in 1:sim)
{
  spider = c(1,1,1) # spider's coordinates
  count = 0 # initialize step counter

  # while ant's coordinates == spider's coordinates
  while (!isTRUE(all.equal(ant, spider)))
  {

  # random walk in one of three dimensions
  xyz = trunc(runif(1,1,4))

  # let the spider move
  if (spider[xyz] == 1) 
    {
    spider[xyz] = 0
    } else if (spider[xyz] == 0) 
    {
    spider[xyz] = 1
    }

  # add one step
  count = count + 1
  }

# add the number of step occurred in the ith iteration
steps = c(steps, count)

# print i and number of steps occurred
cat("\n", i, " ::: ", count)
}

# print the mean of steps
(mean(steps))

9
The code is nice and clear--but it's asking rather much of your users to watch a million lines printed out over the course of a half hour! And how do you know the correct answer isn't, say, 10.000001? :-) FWIW, you can exploit some native R functions to speed this up to under a second: n.sim <- 1e6; x <- matrix(runif(n.sim*3), ncol=3); moves <- x >= pmax(x[, 1], x[, 2], x[, 3]); positions <- apply(moves, 2, cumsum) %% 2; types <- rowSums(positions); vertices <- types[types==0 | types==3]; transitions <- cumsum(diff(vertices) != 0); n.sim / transitions[length(transitions)]
whuber

-1

I believe alesc is on the right track when mentioning "However, you did not defined the term "opposite corner" Unless I am missing something in the question, there is no correct answer, just answers based on assumptions. The cube size is not defined I.E. 10 cubic ft, 1000 cubic ft etc. Ant size is not defined I.E. small garden, carpenter, giant red etc, Spider type is not defined (to determine step size) I.E small garden, Tarantula etc. IF you combine all "not defined" variables. the answer could be 0 steps or an undetermined/infinite number of steps.


3
This answer would not get one to the next level of interviewing unless it were perhaps for a gardening position.
whuber

1
In this case it's clear enough that 'step' means 'a move from one node (corner) to an adjacent node', and it's quite clear what "opposite corner" of a cube means -- take a unit cube for example -- if the ant is at corner (x,y,z) on a unit cube, the spider is at (1-x,1-y,1-z) (so if the ant's at the origin, the spider's at (1,1,1)). As such, none of your concerns seem to substantively relate to the question being asked. [Note to voters: While I don't think this is a good answer without a substantive edit, I don't think this should be the subject of a deletion vote -- up and down votes suffice]
Glen_b -Reinstate Monica

@Glen_b Since it seems to be seeking clarity on the particulars of the question, I thought this was probably intended as a comment rather than a substantive answer.
Silverfish

1
@Silverfish You may be correct, but then it would close as 'not an answer'. I read it instead as an attempt to say "this question is not answerable", which I'd normally regard as an answer when supported with reasoning, but I think the reasons are simply based on misunderstanding the question.
Glen_b -Reinstate Monica
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.