Loading...
More Java Posts
import java.util.ArrayList;import java.util.Iterator;import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner in = new Scanner(System.in);char[] variables = setVariables(in);int[] minTerms = setMinTerms(in);String[] binaryMinTerms = decimalToBinary(variables, minTerms);ArrayList<Group> groups = computeSuccessiveGroups(minTerms, binaryMinTerms);displayInput(variables, minTerms);printPIs(groups, variables);}private static char[] setVariables(Scanner in) {System.out.print("Enter the number of variables: ");int numVariables = in.nextInt();char[] variables = new char[numVariables];System.out.print("Enter each variable separated by spaces: ");for(int i = 0; i < numVariables; i++) {variables[i] = in.next().charAt(0);}return variables;}private static int[] setMinTerms(Scanner in) {System.out.print("Enter the number of min terms: ");int numMinTerms = in.nextInt();int[] minTerms = new int[numMinTerms];System.out.print("Enter each min term separated by spaces: ");for(int i = 0; i < numMinTerms; i++) {minTerms[i] = in.nextInt();}return minTerms;}private static String[] decimalToBinary(char[] variables, int[] minTerms) {String[] binaryMinTerms = new String[minTerms.length];for(int i = 0; i < minTerms.length; i++) {binaryMinTerms[i] = Integer.toBinaryString(minTerms[i]);if(binaryMinTerms[i].length() < variables.length) {String zeros = "";int len = binaryMinTerms[i].length();while(len < variables.length) {zeros = zeros.concat("0");len++;}binaryMinTerms[i] = zeros + binaryMinTerms[i];}}return binaryMinTerms;}private static void displayInput(char[] variables, int[] minTerms) {System.out.print("Function: f(");for(int i = 0; i < variables.length; i++) {if(i == variables.length-1)System.out.print(variables[i]);elseSystem.out.print(variables[i] + ", ");}System.out.print(") = SIGMAm(");for(int i = 0; i < minTerms.length; i++) {if(i == minTerms.length-1)System.out.print(minTerms[i]);elseSystem.out.print(minTerms[i] + ", ");}System.out.println(")");}private static ArrayList<Group> computeSuccessiveGroups(int[] minTerms, String[] binaryMinTerms) {ArrayList<Group> groups = new ArrayList<Group>();for(int i = 0; i < minTerms.length; i++)groups.add(new Group(Integer.toString(minTerms[i]), binaryMinTerms[i]));int sizeBeforeRemoval = 0, currentSize;while(sizeBeforeRemoval != groups.size()) {currentSize = groups.size();for(int i = 0; i < currentSize; i++) {for(int j = i+1; j < currentSize; j++) {if(differences(groups.get(i).binary, groups.get(j).binary) == 1) {String combinedBin = combineBinary(groups.get(i).binary, groups.get(j).binary);groups.get(i).grouped = true;groups.get(j).grouped = true;if(isUniqueBin(groups, combinedBin)) {String newTuple = groups.get(i).decimal + "," + groups.get(j).decimal;groups.add(new Group(newTuple, combinedBin));}else break;}}}sizeBeforeRemoval = groups.size();Iterator<Group> iter = groups.iterator();while(iter.hasNext()) {Group next = iter.next();if(next.grouped)iter.remove();}}return groups;}private static int differences(String a, String b) {int diff = 0;for(int i = 0; i < a.length(); i++)if(a.charAt(i) != b.charAt(i))diff++;return diff;}private static String combineBinary(String a, String b) {String combined = "";for(int i = 0; i < a.length(); i++) {if(a.charAt(i) != b.charAt(i))combined = combined.concat("-");elsecombined = combined.concat(Character.toString(a.charAt(i)));}return combined;}private static boolean isUniqueBin(ArrayList<Group> groups, String s) {for(int i = 0; i < groups.size(); i++)if(groups.get(i).binary.equals(s))return false;return true;}private static void printPIs(ArrayList<Group> groups, char[] variables) {System.out.println("Prime Implicants: ");for(int i = 0; i < groups.size(); i++)System.out.println(groups.get(i).decimal + " | " + binaryToMinTerm(variables, groups.get(i).binary));}private static String binaryToMinTerm(char[] variables, String s) {String minTerm = "";for(int i = 0; i < s.length(); i++) {if(s.charAt(i) != '-') {if(s.charAt(i) == '0')minTerm = minTerm.concat(Character.toString(variables[i]) + "'");elseminTerm = minTerm.concat(Character.toString(variables[i]));}}return minTerm;}}
public static String addBinary(){// The two input Strings, containing the binary representation of the two values:String input0 = "1010";String input1 = "10";// Use as radix 2 because it's binaryint number0 = Integer.parseInt(input0, 2);int number1 = Integer.parseInt(input1, 2);int sum = number0 + number1;return Integer.toBinaryString(sum); //returns the answer as a binary value;}
public class Factorial{public static void main(String[] args){ final int NUM_FACTS = 100;for(int i = 0; i < NUM_FACTS; i++)System.out.println( i + "! is " + factorial(i));}public static int factorial(int n){ int result = 1;for(int i = 2; i <= n; i++)result *= i;return result;}}
public class UserService {private UserRepository userRepository;public UserService(UserRepository userRepository) {this.userRepository = userRepository;}public User getUserById(long id) {try {return userRepository.getUserById(id);} catch (Exception e) {// Log the exception hereSystem.out.println("An error occurred while fetching the user: " + e.getMessage());return null;}}}public class UserRepository {public User getUserById(long id) throws Exception {// Database query to fetch the userif (id < 0) {throw new Exception("Invalid user id");}// Return the user objectreturn new User(id, "John Doe");}}public class User {private long id;private String name;public User(long id, String name) {this.id = id;this.name = name;}public long getId() {return id;}public String getName() {return name;}}
import java.util.*;public class HeapSortMain {public static void buildheap(int []arr) {/** As last non leaf node will be at (arr.length-1)/2* so we will start from this location for heapifying the elements* */for(int i=(arr.length-1)/2; i>=0; i--){heapify(arr,i,arr.length-1);}}public static void heapify(int[] arr, int i,int size) {int left = 2*i+1;int right = 2*i+2;int max;if(left <= size && arr[left] > arr[i]){max=left;} else {max=i;}if(right <= size && arr[right] > arr[max]) {max=right;}// If max is not current node, exchange it with max of left and right childif(max!=i) {exchange(arr,i, max);heapify(arr, max,size);}}public static void exchange(int[] arr,int i, int j) {int t = arr[i];arr[i] = arr[j];arr[j] = t;}public static int[] heapSort(int[] arr) {buildheap(arr);int sizeOfHeap=arr.length-1;for(int i=sizeOfHeap; i>0; i--) {exchange(arr,0, i);sizeOfHeap=sizeOfHeap-1;heapify(arr, 0,sizeOfHeap);}return arr;}public static void main(String[] args) {int[] arr={1,10,16,19,3,5};System.out.println("Before Heap Sort : ");System.out.println(Arrays.toString(arr));arr=heapSort(arr);System.out.println("=====================");System.out.println("After Heap Sort : ");System.out.println(Arrays.toString(arr));}}
//Leif Messinger//Solves wordle//Needs a list of wordle words, newline separated and 5 characters eachimport java.util.*;import java.io.File;import java.io.FileNotFoundException;class WordleSolver {public static void printPointer(int position){for(int i = 0; i < position; ++i){System.out.print(" ");}System.out.print("^");}public static void main(String[] args) throws FileNotFoundException{if(args.length < 1) return;File dictionary = new File(args[0]);Scanner sc = new Scanner(dictionary);ArrayList<String> possibleWords = new ArrayList<String>();while(sc.hasNextLine()){possibleWords.add(sc.nextLine());}Scanner input = new Scanner(System.in);while(possibleWords.size() > 0){//Choose a word out of the possible wordsfinal int randomIndex = (int)(Math.random() * possibleWords.size());String chosenWord = possibleWords.get(randomIndex);possibleWords.remove(randomIndex);System.out.println("Is it correct?");for(int i = 0; i < chosenWord.length(); ++i){System.out.println(chosenWord);printPointer(i);System.out.println(" y/n?");if(input.nextLine().toLowerCase().contains("y")){//Filter by correct characterfor(int possibleWord = possibleWords.size() - 1; possibleWord >= 0; --possibleWord){ //Has to be backwards for removing entries, also has to be int not unsignedif(possibleWords.get(possibleWord).charAt(i) != chosenWord.charAt(i)){possibleWords.remove(possibleWord);}}}}System.out.println("Is it misplaced?");//Stores a count of every letter misplacedshort[] misplacedCounts = new short[('z'-'a')+1]; //Praise be the garbage collectorfor(int i = 0; i < chosenWord.length(); ++i){System.out.println(chosenWord);printPointer(i);System.out.println(" y/n?");if(input.nextLine().toLowerCase().contains("y")){//Filter to make sure there's at least as many letters as needed++misplacedCounts[(chosenWord.charAt(i) - 'a') - 1];for(int possibleWord = possibleWords.size() - 1; possibleWord >= 0; --possibleWord){ //Has to be backwards for removing entries, also has to be int not unsignedint count = 0;for(int j = 0; j < possibleWords.get(possibleWord).length(); ++j){if(possibleWords.get(possibleWord).charAt(j) == chosenWord.charAt(i))++count;}//If there's not enough of the character that we need, then we remove that from the list of possible charactersif(count < misplacedCounts[(chosenWord.charAt(i) - 'a') - 1]){possibleWords.remove(possibleWord);}}//Also filter out words where that letter doesn't belong therefor(int possibleWord = possibleWords.size() - 1; possibleWord >= 0; --possibleWord){ //Has to be backwards for removing entries, also has to be int not unsignedif(possibleWords.get(possibleWord).charAt(i) == chosenWord.charAt(i)){possibleWords.remove(possibleWord);continue; //Breaks the current word and moves on in the loop}}}}}}}