Here is a solution for separate pages. A solution for a single page would require quite a bit more code.
1) Add an "N/A" option to the array Y axis. We will hide this column and automatically click it when we hide the "Other" row, allowing us to meet the "mandatory" requirement.
2) Use Expression Manager to pipe the "Other" text from Q1 into the label for the "Other" row of the array - see screenshot below.
3) Add this script to the source of the array question. It will hide the "Other" row and click the "N/A" option if it has no label.
Code:
<script type="text/javascript" charset="utf-8">
$(document).ready(function(){
// Identify this question
var thisQuestion = $('#question{QID}');
// Hide the "N/A" column
$('table.question thead th:last', thisQuestion).hide();
$('tr.answers-list', thisQuestion).each(function(i) {
$('td:last', this).hide();
});
// If the last row has no label text, hide it and click the hidden "N/A" option
if($.trim($('tr.answers-list:last .answertext', thisQuestion).text()).length == 0) {
$('tr.answers-list:last input.radio:last', thisQuestion).prop('checked', true);
$('tr.answers-list:last', thisQuestion).hide();
}
else {
$('tr.answers-list:last input.radio:last', thisQuestion).prop('checked', false);
}
});
</script>
A working sample survey: