Computational

Computational problems are very unique to NACLO, when compared to other contests like any other country's national linguistic olympiad or even the IOL, but these problems often show the aspects of linguistics that are used more often in your day-to-day life and can often be more approachable than the linguistics problems you see.

Describing Computational Problems

The main thing that unifies all computational problems on the NACLO is that they often (but not always) involve the use of algorithms and computer programming to solve linguistic puzzles. These problems require the use of computational thinking and problem-solving skills, as well as an understanding of linguistics and language structure. Many times, they start off with English and then expect you to either describe an algorithm or apply it to more English or other languages.

There are several common types of computational aspects that may appear on the NACLO, including:

  • Morphological analysis: Given a word or set of words, identify how to break them into morphological components (prefixes, suffixes, stems, etc.).
  • Phonological analysis: Given a word or set of words, identify how to break them into phonological components (syllables, phonemes, etc.).
  • Word sense disambiguation: Given a word that has multiple meanings, ientify how to determine which meaning is being used in a given context.
  • Machine translation: A combination of all of the above.
  • Machine categorization: Interpret how computers categorize and interpret classes of words.
  • Human categorization: Interpret how humans categorize and interpret classes of words. Essentially, anything that involves languages, computers, and humans in some way is fair game, so the above list is very much not comprehensive. These problems are the most "unpredictable" in terms of what might come up in the future, but there are still a few things you can try to prepare for them.

"No Intro" Problems

Many (but not all) computational problems fall into one of two types: in one type, you aren't explained what the process or algorithm you are trying to look for is, and the majority of the problem is about finding this algorithm.

The most important thing to remember here is Occam's razor: the simplest explanation is probably the correct one.

It's important to start by breaking down the problem into smaller parts and identifying patterns or rules that might be involved. From there, you can start to develop hypotheses and test them out by applying them to different examples. It's also important to pay attention to any hints or clues that might be provided in the problem statement flavortext or in the examples given; often times, reading the opening blurb might provide an insight (or even very explicit hint!) into the phenomenon.

"With Intro" Problems

The other type of computational problem provides an introduction or explanation of the algorithm or process you are expected to use. In these cases, the challenge is often to apply the algorithm or process correctly to a new set of examples, and then see how it changes with minor changes to the input. You may be even asked to develop a new algorithm.

The key to solving these problems is to fully understand the algorithm or process being described and to practice applying it to different examples. You may also need to adjust the algorithm or process to fit the specific requirements of the problem at hand. These problems are often much more CS-minded, so it might helpt to do a little bit of computational thinking here.

General Tips

Here are a few general summarized tips:

  • Practice, practice, practice! The more you work with algorithms and programming, the more comfortable you will become with these types of problems. It might even help to do logic puzzles or something similar to get that logical part of your brain going.
  • Use common sense. A lot of these problems involve "general knowledge" about how things interact and definitions of common words, so don't forget these when working through problems.
  • Break the problem down into smaller parts and identify patterns or rules that might be involved.
  • Pay attention to any hints or clues provided in the problem statement or examples given.
  • Use Occam's razor: the simplest explanation is often the correct one.
  • Fully understand the algorithm or process being described before attempting to apply it to new examples.
  • Adjust the algorithm or process to fit the specific requirements of the problem at hand.

Computational problems are also often very long, so it's important to consider how that factors into the time spent. Although they are often easier to make progress in than linguistics problems (because most of the knowledge is already known), they might take longer. Regardless, they are more reliable to get points than linguistics problems, so it's important to consider how you want to approach them.

Practice Problems

There aren't any walkthroughs in this section, since most computational problems are just "working through them" until you get to the answer. We recommend you time yourself, however, and see how much time it takes you to get to the idea in each of these problems, since the best way to get faster at these problems is through practice.

Problem Solution
NACLO 2010/A. Gelda's House of Gelbelgarg 1 Solution
NACLO 2019/G. Break it Down! 1 Solution
NACLO 2022/G. Out of Order 1 Solution
NACLO 2022/L. Stopping for a Spell 1 Solution
NACLO 2021/H. Sequitur 1.5 Solution
NACLO 2021/D. Made You Look! 2 Solution
NACLO 2020/D. Pay Attention 2 Solution
NACLO 2021/I. Non Sequitur 2 Solution
NACLO 2022/C. To Make a Long Story Short 2 Solution
NACLO 2022/M. A Splitting Disagreement 2.5 Solution
NACLO 2018/G. By the Same Token 3.5 Solution
NACLO 2020/M. Adjupectiheaval! 4 Solution
NACLO 2021/R. GloVe Compartment 5 Solution
NACLO 2022/P. Yumology 6.5 Solution