Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

I AM USING THE IDE JES TO COMPILE THE CODE BECAUSE WE ARE REQUIRED TO DO SO. PLE

ID: 3593253 • Letter: I

Question

I AM USING THE IDE JES TO COMPILE THE CODE BECAUSE WE ARE REQUIRED TO DO SO. PLEASE HELP FIX THE ERROR IN THIS CODE THAT IS CAUSING A SYNTAX ERROR WHEN I COMPILE.....THE PROBLEM IS IN THIS FUNCTION TOWARDS THE MIDDLE OF THE CODE CALLED * def print_abs_list(arr):*

import time
import math
from operator import itemgetter
from itertools import permutations


def is_mobile(i,arr):
    if i < 0 or i > len(arr)-1:
        return False
    if i == 0 and arr[i]<0:
        return False
    elif i == len(arr)-1 and arr[i] > 0:
        return False
    elif arr[i] < 0:
        if abs(arr[i]) < abs(arr[i-1]):
            return False
    elif arr[i] > 0:
        if abs(arr[i]) < abs(arr[i+1]):
            return False
    return True

def is_any_mobile(arr):
    val = False
    for i in range(len(arr)):
        val = val or is_mobile(i,arr)
    return val

def max_mobile(arr):
    max_mobile_index = None
    for i in range(len(arr)):
        if is_mobile(i,arr):
            if max_mobile_index is None:
                max_mobile_index = i
            elif abs(arr[i]) > abs(arr[max_mobile_index]):
                max_mobile_index = i
    return max_mobile_index

def print_abs_list(arr):
    for i in arr: # I AM GETTING THE FOLLOWING ERROR WHEN I COMPILE Invalid syntax.Your code contains at least one syntax error, meaning it is not legal Jython. FOR THE FOLLOWING LINE OF CODE WITHIN THIS print_abs_list(arr) function, PLEASE FIX
        print (abs(i),end=" ")
    print("")


def swap_and_change_sign(index,arr):
    if index<0 or index > len(arr)-1:
        return

    if arr[index] < 0:
        # swap with the left one
        k = arr[index]
        arr[index] = arr[index-1]
        arr[index-1] = k
        for i in range(len(arr)):
            if abs(arr[i]) > abs(k):
                arr[i] = -1*arr[i]
    else:
        # swap with the right one
        k = arr[index]
        arr[index] = arr[index + 1]
        arr[index + 1] = k
        for i in range(len(arr)):
            if abs(arr[i]) > abs(k):
                arr[i] = -1 * arr[i]

def JohnsonTrotter(n):
    vals = []
    for i in range(n):
        vals.append(-(i+1))
    print_abs_list(vals)
    while is_any_mobile(vals):
        max_mob_index = max_mobile(vals)
        swap_and_change_sign(max_mob_index,vals)
        print_abs_list(vals)

Explanation / Answer

import time
import math
from operator import itemgetter
from itertools import permutations

def is_mobile(i,arr):
if i < 0 or i > len(arr)-1:
return False
if i == 0 and arr[i]<0:
return False
elif i == len(arr)-1 and arr[i] > 0:
return False
elif arr[i] < 0:
if abs(arr[i]) < abs(arr[i-1]):
return False
elif arr[i] > 0:
if abs(arr[i]) < abs(arr[i+1]):
return False
return True
def is_any_mobile(arr):
val = False
for i in range(len(arr)):
val = val or is_mobile(i,arr)
return val
def max_mobile(arr):
max_mobile_index = None
for i in range(len(arr)):
if is_mobile(i,arr):
if max_mobile_index is None:
max_mobile_index = i
elif abs(arr[i]) > abs(arr[max_mobile_index]):
max_mobile_index = i
return max_mobile_index
def print_abs_list(arr):
abs_arr = [str(abs(i)) for i in arr]
print " ".join(abs_arr)
print("")

def swap_and_change_sign(index,arr):
if index<0 or index > len(arr)-1:
return
if arr[index] < 0:
# swap with the left one
k = arr[index]
arr[index] = arr[index-1]
arr[index-1] = k
for i in range(len(arr)):
if abs(arr[i]) > abs(k):
arr[i] = -1*arr[i]
else:
# swap with the right one
k = arr[index]
arr[index] = arr[index + 1]
arr[index + 1] = k
for i in range(len(arr)):
if abs(arr[i]) > abs(k):
arr[i] = -1 * arr[i]
def JohnsonTrotter(n):
vals = []
for i in range(n):
vals.append(-(i+1))
print_abs_list(vals)
while is_any_mobile(vals):
max_mob_index = max_mobile(vals)
swap_and_change_sign(max_mob_index,vals)
print_abs_list(vals)

# copypastable code link: https://paste.ee/p/n4Ygk