Shortest

Shortest[p]

is a pattern object that matches the shortest sequence consistent with the pattern p.

Details

  • Shortest works for both ordinary expression patterns and string patterns.
  • If several Shortest objects occur in the same expression, those that appear first are given higher priority to match shortest sequences.
  • Shortest[p,pri] is given priority pri to be the shortest sequence. Matches for shortest sequences are tried first for Shortest objects with higher priorities.
  • Priorities can be any expression, and are ordered in standard Wolfram Language Sort order. Shortest[p] specifies the highest possible priority.
  • Shortest objects with equal priorities are tried in the order they appear in the expression.
  • If no explicit Shortest or Longest is given, ordinary expression patterns are normally effectively assumed to be Shortest[p], while string patterns are assumed to be Longest[p].
  • For ordinary expressions, Shortest[p] specifies that not just p itself, but also all parts of p should match the shortest sequences.
  • Shortest[p] corresponds to a "non-greedy pattern".
  • Shortest[p] may not correspond to the absolutely shortest expression matching p if there are additional constraints elsewhere in the pattern.

Examples

open allclose all

Basic Examples  (1)

Control ambiguous matches by using Shortest:

Scope  (2)

Shortest works with string patterns:

Use priorities to affect ambiguous choices:

Applications  (1)

Consider the following variable-length argument function:

Use Shortest to express it as one pattern:

Properties & Relations  (2)

For expressions, when a pattern has consecutive sequences, the first one is effectively wrapped in Shortest:

For string patterns, Shortest provides "non-greedy" or "lazy" matches of all minimum-length matches:

Possible Issues  (3)

When there are additional constraints, Shortest may not match the absolute shortest sequence:

For string patterns, Shortest will match all minimal substrings, not just the absolute shortest match:

Priorities are not supported in string expressions:

Wolfram Research (2007), Shortest, Wolfram Language function, https://reference.wolfram.com/language/ref/Shortest.html.

Text

Wolfram Research (2007), Shortest, Wolfram Language function, https://reference.wolfram.com/language/ref/Shortest.html.

BibTeX

@misc{reference.wolfram_2020_shortest, author="Wolfram Research", title="{Shortest}", year="2007", howpublished="\url{https://reference.wolfram.com/language/ref/Shortest.html}", note=[Accessed: 20-April-2021 ]}

BibLaTeX

@online{reference.wolfram_2020_shortest, organization={Wolfram Research}, title={Shortest}, year={2007}, url={https://reference.wolfram.com/language/ref/Shortest.html}, note=[Accessed: 20-April-2021 ]}

CMS

Wolfram Language. 2007. "Shortest." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/Shortest.html.

APA

Wolfram Language. (2007). Shortest. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/Shortest.html