Statistics

Problem Statement for "Bullets"

Problem Statement

Each gun leaves a unique set of scratches, sort of like a fingerprint, on every bullet that fires through its chamber. These scratch marks are used widely in forensic investigations of crime scenes.

Given a list of guns and the scratch marks that they leave, and the scratch marks on a bullet, return the element number (0-based) of the gun which fired the bullet.

In order for a bullet to match the gun, the gun must leave just as many scratches as are on the bullet, with the same intervals between scratches. For example, the scratch marks:

"| |||  |   |"
"| |||  |   |"
match, but
"| |||  |   |"
"||| |  |   |"
do not.

Note that since bullets are round, the scratch marks wrap around. Therefore:

"|| ||| | "
" | || |||"

match (since it's the same scratch marks, only starting at a different location).

If no gun matches the bullet, return -1.

Definition

Class:
Bullets
Method:
match
Parameters:
String[], String
Returns:
int
Method signature:
int match(String[] guns, String bullet)
(be sure your method is public)

Notes

  • Gun markings cannot be flipped. That is, "|||| ||| || |" doesn't match "| || ||| ||||".

Constraints

  • guns will contain between 0 and 50 elements, inclusive.
  • each element of guns will have the same length as bullet.
  • bullet will have length between 5 and 50, inclusive.
  • bullet and each element of guns can contain only the pipe character '|' and spaces.
  • at most one gun will match the bullet.

Examples

  1. {"| | | |","|| || |"," |||| "}

    "|| || |"

    Returns: 1

  2. {"||| |","| | || "}

    "|||| "

    Returns: 0

    Notice that index 0 is the same scratch pattern, just shifted.

  3. {"|| || ||","| | | | ","||||||||"}

    "||| ||| "

    Returns: -1

    No gun matches the scratches.

  4. {}

    "| | | |"

    Returns: -1

  5. {"|| || ||","| | | | ","||| ||| ","||||||||"}

    "|| ||| |"

    Returns: 2

  6. {"|| | | | || | | || || | || | || | | "," | || | || | ||| | | ||| | | | | | ","| | ||| | | ||||| || |||||| ||| |","| | | | || | | ||| ||||| || | | ","| | | || || | | | ||| |"," ||||| | ||| ||| ||| | ||| || | ||| "," | | || | | | || || | | | || "," | ||| ||| | ||| || | || |"," | ||| ||||| | | | | | | "," | || |||| | ||| | || || ||| |"," ||| | ||||||| || | || ||| | ||||"," | || ||| |||| | | || ||| | | | | ","|||||||| | ||||| || || | | | ||| "," || || |||| ||| || || | || |"," ||| | | | | ||| | | ||||| || | | | "," | | |||| |||| ||||| | | | | | |"," | || || | ||| || ||| || |||| ||| ","|| | | || || || || | | | || | | |"," | | | || | ||| | "," | | | | |||| | || ||||| | | ||| ||| | |"," || | | ||| |||| || || |||| ||| | "," | | | | | | ||||| || | "," | | || |||| ||||| | || | | || || ","|||| | | || | || |||||| ||| ||||"," | | | |||| ||| |||||| | | || | | "," |||||| | | | || | || |||| ||||","| | | || || | | | ||| || |||| || |||| ","| || ||||||| || ||| | ||| |||| ||| "," ||| ||| | |||| | ||| | | |||| | |"," | ||||||| | || | | ||| |||| |"," | | |||| || ||||| || | | | | || ","| | ||| |||| | | ||| || ||||| |||","|||| || | || | | | | ||| ||| || ","|| | || || | || || | || | || | |"," | | || ||||||| | || ||||| | | | ||| |"," | | ||| | | | || | | || || "," ||| |||| ||| | | | || | || | | ","|| || || ||| | ||| | | |||| || | ","|||| || || | | | |||| || || | | |"," || | || | | || | | | || | | | || |","| | || | | | ||| || | | ||"," | || || || | | || | | ||| | |||||"," | | | || || | |||||| | || || ||","|| || || | | | | || | | |||| |"}

    "| |||| | ||| | | |||| | | ||| ||| "

    Returns: 28

  7. {" | | ||| || | ||"," ||| | | || | | "," | || | | || ","| ||||| | |||| |","|| || | |||||| | ","| | ||| | | || "," || | | | | | |"," || | || | || |","| | ||| |||| | ","| || | | | |||| ","|| |||| | || | | |"," || | || || |","| |||||||| | | |","|| |||| | || | ","| || || | ||||| "," | | | | |||| "," | ||| | | | |"," ||| || | ||| |"," | | | | |"," | | ||| |||||| "," | ||| | |||| "," | ||| || |||| "," | ||||| |||| || |"," | ||| | | ||| || ","| ||| || ||| | "," || || || | |"," || | ||||||||","| | ||||| || ||||"," | | | | | | ||"," | | | | | | | |"," | ||| || | ||| ||","|| |||| | || | "," || | ||||| | | ","||| || | || | | ","|||| || ||| "," | || | | | ","|||||| || ||| || ","| ||| | | || |||"," ||| | |||| |||","||||| |||||| || | ||","|| ||| | |||| "," | | || || |||| ","|| | | |||| | | |","|||||| || | | | "," | | | ||||| | "}

    " || | ||| || | ||| "

    Returns: 30

  8. {"| ||| || |"," | | | || || ","|||| |||| ","||| | ||| ||"," || | | |","| | ||| |||| ","||||| ||||| "," | | |||| | "," | |||| |"," || | ||| | |"," || ||| ","| || | "}

    "| ||| ||||| "

    Returns: 3

  9. {" | | || ||| ||||||| |","| | | | || | || ||","||| | || || |||| | |||"," | || | |||| | "," || | | |||||| | | ||","||| || | || | || | || ","||||| | | | || | | ","| | ||| | | | | "," || || | | | | || ","| ||||||| | || | || | |","||| |||| ||| | |||| "," | ||| ||| | |||| |","| | | | | ||| |","| | ||| || | | || ||||"," | | || | | ||||| "," | || | || | ||||||| ","| || ||| ||| | | || "," || | || | || | | |","| || | | || ||| | ||","| | | | || | || ||"," |||| ||| || "," | || || ||| | | | "," | |||| | | | | |","| | | ||||||| | | | ","| | || | | | | |||| ","| |||| |||| | | ||| || |","| | | | || || | | |"," || | || | ||| ","| | | ||||| | || ","| || | || | | || ||||","| | ||||| | || || | ","| || || || ||| || |"," || |||| || | || "," | | ||||| || | | |"}

    " |||| | | ||| || || |||| "

    Returns: 25

  10. {"|| |||||"," | | ","| ||| ||"," | | | |","|||| || |","| | | ||"}

    "||||| ||"

    Returns: 0

  11. {" | | ||| || | ","||| | || | | ||| || | ","| | || | ||| | | ||||| |","| | | |||| | |","| | || ||| || || | | | |||","|| | |||| || | | || ","||| |||| || || | || "," || ||| | | ||| | ","| | | || || | ||| ||| |","| || | ||| | | || | | ","|| ||| | ||| | |||| |"," | ||| | | | ||| | | |","|| || || ||||| || | |||||","|| ||| |||| || || | || "," | | ||| ||| | | | | |","||||||||| || | | || |"," || ||||| ||| || ","|| | | | | | | | "," || | | || || | "," | || || || | | || | |","||||| | || | ||| "," | | || || ||| ||","|| || | | || ||||||| | |","| |||| | ||||| | | || |||"," | ||| | |||| || | | |","||| ||||| || |||| ||| |","| || ||| || || | | ||","|| | ||| || |||| || "," | || ||| | || | || "," ||| || ||| | || "," ||| || | | | | ||| |"}

    " ||| | | ||| | || "

    Returns: 7

  12. {" || ||||| || || || | || | |||","||| || | | | | | || | | | || | |"," |||||| |||||| | || | | | || |"," | | || | || | ||| |||||| ","| || ||| ||||| ||||| | |||| | ","| || || | | | || || | || | ","| || | ||| ||| ||| | |||","|| ||| || |||| | | ||| || | | | "," | | || | || | |||| || ","| ||||| ||||| | | | ||"," | || ||| | | | | || ||||||| | "," | | | | | | | || | | |","| ||| | ||| | | | | | | ","| ||||| || || || || | ||| | |||","| | ||| ||||| || | || ||||| |||"}

    "| || | | || | || | |||"

    Returns: 8

  13. {" || | || || | |||| ","| | | | | | | ","| | ||| |||||| |||","||| | |||||| | |","| || || | || ||||| | |||"," ||| | | ||| ||| ||","|| | ||| || | | |","| | || || | ||| | || |"," | ||| | |||| || |"," || || | | ||| |||| "," | | ||| | || || |","| | | ||| || |||| ||"," ||| || | | | ||"," || || | || | | |","| | | || || | || "," | || | | | "," | || | ||||| "," || || | | | ||","|| | | |||||| |||| ","| | ||||| | | | | "}

    " | || | | | "

    Returns: 15

  14. {"| || ||| | | | |||| || | | ||| ||","|| | || | | | | | |||| ||||||| | "," | | | | | |||||||| ||| || ","| || | ||| || ||| ||| | || | |"," | ||| |||| | || | | | | | "," || | | || ||||| | || | | |"," || | ||| || | || || || || "," | | | ||| | | || | || || "," | || | ||| | | || | | | || |","| |||| | | || | || | ||","||||| ||||| | || | | || | || || "," || || || | |||||| ||||| | | | "}

    " | || | || | ||| |||| | "

    Returns: 9

  15. {"| | ||| | || ||| |||||"," || ||| || | | |"," || | | || || | || |","||||| || || | | | | | | || | |||","|||| | ||| | | | | || ||| | |"," ||| ||||||| | | ||| || |||"," | | | || | || | | || | | | ","| | ||| || ||| | | || "," || | | | || | ||| || ||| || "," ||| ||| ||| | || | | ||||| | ","|| | | | | | || | | | | ","||| ||| || || | || || | | "," || || | ||| | | | | |"," ||| | | | | |||| ||| | ","|| || | | ||||||| | ||"," || | | | || | | || ||| || ","||| | || | || ||| ||","| | || || || || | | | |||| "," || || || |||| || | | |||||||| ","| || ||| | |||| | | | || "," |||| | || || | | | |","| || | |||| || ||| | || |"}

    " | || ||| | |||| | | | || "

    Returns: 19

  16. {" | | ||||| ||| ||| | || ||| || |||","| | | || || ||| | | || |||| | |||| || "," || || || | || | ||| | ||| | ||","|| || | | |||| ||||| | |||| || || "," | ||| |||| || | | || || |||| ","|| ||| || | ||||||| | || | | ||"," | || || ||| | | || ||| || || || | "," | | | || ||| ||| ||||| || |"," | | ||| | ||| || |||||| | ||","|||| | | |||| || | ||| |||| | |||"," ||| | | || | | || || | ||| || | || | ","| ||| | || || | ||| | | | "," | ||||||| ||| |||| | || | || | | |"," | || | | || | | |||| || ||||| | | |","| |||| || ||||| | | | | | ||| |"," | || | | | ||| | | || | |"," | || |||| | ||| ||| || | "," | || | ||||| ||||| | ||| | | | | | |"," |||| | | || | ||| | | | | ||| |","| |||| | || || |||| | | | | |||| || ","| ||| |||| |||| | || | ||| || | ||","|| ||| | | | ||||| |||| | || || ","| ||| |||||| || | ||| || || | ||| | ","| || | || || |||||| | || | | | |"," | | | || || |||| | || |||| |||| | ||| | "," |||| | |||| || || | | | | ||| ||| ","|| | | || || || | | | | | || ","|| || |||||| | | | | ||| |||| | || "," | | | | || | || | | | | |","| | ||| | ||||| | || | || ||| | ","||| ||||| ||| ||| || |||| |||| | ||| ","|||| || || ||| | | | || | | | || "," | || | | || | ||| | | | "," ||| | | | || | || |||| | | || | ||"," || || || | | ||| | |||| | | || | |||"," || |||| | || |||| || || || | | || |","|| |||||||| | | |||||||||| ||| |||| ||","| | | | | | || | ||| ||||| || ||| "," ||||| ||| ||| ||| | || | |||||| ","||| || || || | | | | || | || |||||","| | | |||||||| | | | | |||||||||| | |||"}

    "| || ||||| || | | || | | | | ||"

    Returns: -1

  17. {"||||||| | || |||| | | | |","|| ||| | ||| | | | ","| |||| || || ||||| | |||"," | | |||| || || | "," || | || | | || || "," | | | || | | | ||"," ||||| || ||||||| ||| | "," | || | || | ||| ||||"," || | || | || | "," | | | | | | ||| ||||| ","||| | | || | | ||"," | || | | | | | ||| | ","| | ||| || | ||||||| "," | | | |||||||| || | | | ","||| | | ||| |","| | | | ||| | | "}

    " | | | | | || ||| | ||||"

    Returns: -1

  18. {" | || | | ||| | | | | ||"," | | ||| || | | |||||| | ","| || ||| ||||||| || | ","| || | |||| | | | ||||"," | | | | ||| |||| | ||"," | | | || || || || | ","| | | || ||| || |||||||","|| || | ||| | || | || | ","|| | | ||| | ||| ||| ||"," || || ||||||| || | | |||"," || || | ||||| || |||"," | | || | | |||| | | ","|| ||||| | | |||||| | | |"," || || | ||| || || || "," | || || | ||| | |||||","| | || | ||| ||||||| "," ||| || | ||| || | | "," | || || || | | || | |||"," ||| || | | |||| | | | ","| | | | || || | || || | "}

    "||| || || | || ||| "

    Returns: -1

  19. {"||| | "," | | "," |||| |"}

    "| | | |"

    Returns: -1

  20. {" ||| ||| | | |||"," ||||| | || ||| | ","| || | ||| | |||||| ","||||| | || | "," | || ||||||| | | ||"," || || | | || | || ","| | || | |||| "," || |||| || | | "," ||| || ||| | ||| | ","| | || | ||| || ||"," | | | || || ||||"," || | ||| | | | | ","| || || | ||| ||||","||||| | || | | | | ","| ||| ||| || | | "," |||| ||| | || || | "," || | ||| | || || |"," | || | | | |||||| ","||| | ||| | | "," | | | | ||| | ||","|| || | | | | ","| | || || |||||| || |"," || || ||||| | | | |"," | | || || ||||| ","|| ||| | || ||||","| | ||||||| ||| |","| | | ||| |||| |"," ||| ||| || || || |","| | | | ||| || ","| ||| ||| || ||| "}

    " | | || | || "

    Returns: -1

  21. { "|||||", "|| |" }

    "|||||"

    Returns: 0

  22. { "| | | |" }

    "| ||| |"

    Returns: -1

  23. { "||| |", "| | || " }

    "|||| "

    Returns: 0

  24. { " ||||" }

    "|||| "

    Returns: 0


This problem statement is the exclusive and proprietary property of TopCoder, Inc. Any unauthorized use or reproduction of this information without the prior written consent of TopCoder, Inc. is strictly prohibited. (c)2024, TopCoder, Inc. All rights reserved.
This problem was used for: