VLSI DV Interview Puzzles · All levels
Locator Methods Return New Queues
What are `evens`, `idx`, and final `q` after these locator operations?
Puzzle
Difficulty: Hard · Puzzle 6 of 6 · Topic: Queue and Array Puzzles
What are `evens`, `idx`, and final `q` after these locator operations?
Code
systemverilog
module p6;
int q[$] = '{1,2,3,4,5,6};
int evens[$];
int idx[$];
initial begin
evens = q.find with (item % 2 == 0);
idx = q.find_index with (item > 3);
q = q.find with (item < 4);
$display("evens=%p idx=%p q=%p", evens, idx, q);
end
endmoduleHint
`find` returns matching values; `find_index` returns matching indices; both produce new queues.
Step-by-step solution
diagram
1) `find` over original q picks values 2,4,6 into `evens`.
2) `find_index` over original q for `item > 3` yields indices 3,4,5.
3) Final assignment `q = q.find(item < 4)` replaces q with `{1,2,3}`.Answer
Answer: evens=' {2,4,6}, idx=' {3,4,5}, q=' {1,2,3}
Why candidates get it wrong
A common miss is assuming locator methods mutate the source queue in place.
Interviewer follow-up
How do results differ if you call `find_index` after reassigning `q`?