Character Animator
I am always open to new ideas.
Feel free to contact me for crit/comment of the script or if you have an idea for a script.

This tool will allow you to copy a list of attributes that can be stored with the scene file.
You will be able to paste these copied attributes to any objects.

It is very useful tool for riggers, animators, and in general if you would like to store certain attributes or just to copy/paste them.

Features:

  • Multiple copies of attributes that are stored with the scene file
  • Copy multiple object's attributes at once
  • Copied attributes can be pasted into multiple objects at once
  • Copied attributes are empty groups so can change the name, add attributes, move, etc. to edit the attributes to be copied
  • Double click the listed attribute to select the empty group to edit the copied attributes
  • Delete key on your keyboard will remove the selected item on the list (or the Delete button)

To open the main UI

mn_copyAttr;

Copy/Paste command

[select objects to paste]
[select object to copy]
mn_copyPasteAttrSL();
or
mn_copyPasteAttr( [target] , [source] );

This tool will allow you to match object's position by moving the object or in place (just the handle).

Features:

  • Match position/pivot of multiple objects at once.
  • Initial "FROM" list will be everything selected except the last selected.
    Last selected will be the "TO".
  • Double click the name in the list to select the object.
  • Select and press Delete to remove the item from list
    or use button "Remove selected [list]"
  • Refresh:: will verify that all the objects in the list exists.
    If not, it will remove them from the list.

To open the main UI:

mn_match;

Match position based on rotation pivot (match button in UI)

[select objects to move]
[select object to move to]
mn_matchPositionSL;
or
mn_matchPosition( [to move] , [to move to] );

Match just the rotation pivot without moving the objects (match just pivot button in UI)

[select objects to move]
[select object to move to]
mn_matchRotatePivotSL;
or
mn_matchRotatePivot( [to move] , [to move to] );

This tool will allow you to create a tabbed notes that will be stored with your scene file.
It is very useful tool for programmers as well as artists who would like to store notes or codes that can be executed easily.

New in v1.1.1:

  • From v1.1.0: Fixed minor bug of notes being encoded when tab was editted.
  • Sorting tabs in new/edit note UI.
    Ex: Entering 1 or less will make the note 1st, entering 3 will make it 3rd note.
  • Cleaned up some codes to make it a bit more efficient.

Features:

  • Tabbed notes allowing multiple notes in one window
  • Double Clicking the tab to execute the content of the note.
    Very useful for programmers as well as alternate option for shelves.
  • Ability to Import/Export notes to files
  • Edit notes easily by entering the note and clicking save button
  • Delete/Clear all notes with one button with confirm prompt

To open the main UI

mn_notes;

This is a useful tool to make a shelf button for a quick select for your characters, objects, etc.

It uses $gMN_namespace for namespace to determine the character (or not if you choose to).

Setup:

Add the following line in your userscript.mel file using notepad located in your maya script folder.
If there's no such file, just create one with notepad and save as userscript.mel.

global string $gMN_namespace = "";

What this does is that it sets the variable $gMN_namespace to blank as default everytime you start Maya.

My intention is to use this variable throughout my scripts written for characters so that you can create one shelf button and work for multiple characters.

To open the main UI

mn_quickSelectMakerUI;

To set my Global Namespace: $gMN_namespace

mn_setNamespace;

By entering your birthday, the script will give you some information about your birthday.

By entering number of players and the goal to get, the game will start from the random player.
To win, you must be the one to enter the last number to reach the goal number.
The rule is that you can only enter 1, 2, or 3 as the increment.

Problem

The decimal numeral system is composed of ten digits, which we represent as "0123456789" (the digits in a system are written from lowest to highest). Imagine you have discovered an alien numeral system composed of some number of digits, which may or may not be the same as those used in decimal. For example, if the alien numeral system were represented as "oF8", then the numbers one through ten would be (F, 8, Fo, FF, F8, 8o, 8F, 88, Foo, FoF). We would like to be able to work with numbers in arbitrary alien systems. More generally, we want to be able to convert an arbitrary number that's written in one alien system into a second alien system.

Input

The first line of input gives the number of cases, N. N test cases follow. Each case is a line formatted as

alien_number source_language target_language
Each language will be represented by a list of its digits, ordered from lowest to highest value. No digit will be repeated in any representation, all digits in the alien number will be present in the source language, and the first digit of the alien number will not be the lowest valued digit of the source language (in other words, the alien numbers have no leading zeroes). Each digit will either be a number 0-9, an uppercase or lowercase letter, or one of the following symbols !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~

Output

For each test case, output one line containing "Case #x: " followed by the alien number translated from the source language to the target language.

Problem

You find yourself standing outside of a perfect maze. A maze is defined as "perfect" if it meets the following conditions:

  1. It is a rectangular grid of rooms, R rows by C columns.
  2. There are exactly two openings on the outside of the maze: the entrance and the exit. The entrance is always on the north wall, while the exit could be on any wall.
  3. There is exactly one path between any two rooms in the maze (that is, exactly one path that does not involve backtracking).

You decide to solve the perfect maze using the "always turn left" algorithm, which states that you take the leftmost fork at every opportunity. If you hit a dead end, you turn right twice (180 degrees clockwise) and continue. (If you were to stick out your left arm and touch the wall while following this algorithm, you'd solve the maze without ever breaking contact with the wall.) Once you finish the maze, you decide to go the extra step and solve it again (still always turning left), but starting at the exit and finishing at the entrance.

The path you take through the maze can be described with three characters: 'W' means to walk forward into the next room, 'L' means to turn left (or counterclockwise) 90 degrees, and 'R' means to turn right (or clockwise) 90 degrees. You begin outside the maze, immediately adjacent to the entrance, facing the maze. You finish when you have stepped outside the maze through the exit. For example, if the entrance is on the north and the exit is on the west, your path through the following maze would be WRWWLWWLWWLWLWRRWRWWWRWWRWLW:

If the entrance and exit were reversed such that you began outside the west wall and finished out the north wall, your path would be WWRRWLWLWWLWWLWWRWWRWWLW. Given your two paths through the maze (entrance to exit and exit to entrance), your code should return a description of the maze.

Input

The first line of input gives the number of cases, N. N test cases follow. Each case is a line formatted as

entrance_to_exit exit_to_entrance
All paths will be at least two characters long, consist only of the characters 'W', 'L', and 'R', and begin and end with 'W'.

Output

For each test case, output one line containing "Case #x:" by itself. The next R lines give a description of the R by C maze. There should be C characters in each line, representing which directions it is possible to walk from that room. Refer to the following legend: