Ategon

joined 2 years ago
MODERATOR OF
[–] [email protected] 2 points 2 years ago

It doesn't, still spams low upvote posts, just slightly tweaked ordering

[–] [email protected] 2 points 2 years ago* (last edited 2 years ago) (1 children)

btw if you put the url to nim as /c/[email protected] I dont think the url bot will trigger since it does the same thing the ! format does

[Nim](/c/[email protected])

Nim

Edit: yeah looks like it didnt reply to me so this format works

[–] [email protected] 13 points 2 years ago (1 children)

Looks like a camelCase variable to me so its likely just a temporary word they replace with the actual bot name but something went wrong and it didn't replace it properly leading to the temporary text showing instead

There could be some other reasons but the actual cause cant really be determined without looking at the source code

[–] [email protected] 8 points 2 years ago (1 children)

Congrats on the alpha 🎉

[–] [email protected] 18 points 2 years ago (2 children)

Advent of code is an coding advent calendar where a new puzzle is released every day for people to solve

The numbers there (apart from the timer) in the site that was linked can be clicked to bring you to specific puzzles (1 aka Day 1 for the puzzle on the 1st of december, 2 aka Day 2 for the 2nd of december, etc.)

[–] [email protected] 2 points 2 years ago (1 children)

Weve got a go community in the site that you might get some answers from rather than the general community here [email protected]

[–] [email protected] 3 points 2 years ago* (last edited 2 years ago) (1 children)

This is more a community for the development side being activitypub instead of fediverse

Theres communities like [email protected] though

I haven't touched friendica much so dont know the answer to that

[–] [email protected] 1 points 2 years ago* (last edited 2 years ago)

JavaScript

Ended up misreading the instructions due to trying to go fast. Built up a system to compare hand values like its poker before I realized its not poker

Likely last day im going to be able to write code for due to exams coming up

Code Link

Code Block

// Part 1
// ======

function part1(input) {
  const lines = input.replaceAll("\r", "").split("\n");
  const hands = lines.map((line) => line.split(" "));

  const sortedHands = hands.sort((a, b) => {
    const handA = calculateHandValue(a[0]);
    const handB = calculateHandValue(b[0]);

    if (handA > handB) {
      return -1;
    } else if (handA < handB) {
      return 1;
    } else {
      for (let i = 0; i < 5; i++) {
        const handACard = convertToNumber(a[0].split("")[i]);
        const handBCard = convertToNumber(b[0].split("")[i]);
        if (handACard > handBCard) {
          return 1;
        } else if (handACard < handBCard) {
          return -1;
        }
      }
    }
  });

  return sortedHands
    .filter((hand) => hand[0] != "")
    .reduce((acc, hand, i) => {
      return acc + hand[1] * (i + 1);
    }, 0);
}

function convertToNumber(card) {
  switch (card) {
    case "A":
      return 14;
    case "K":
      return 13;
    case "Q":
      return 12;
    case "J":
      return 11;
    case "T":
      return 10;
    default:
      return parseInt(card);
  }
}

function calculateHandValue(hand) {
  const dict = {};

  hand.split("").forEach((card) => {
    if (dict[card]) {
      dict[card] += 1;
    } else {
      dict[card] = 1;
    }
  });

  // 5
  if (Object.keys(dict).length === 1) {
    return 1;
  }

  // 4
  if (Object.keys(dict).filter((key) => dict[key] === 4).length === 1) {
    return 2;
  }

  // 3 + 2
  if (
    Object.keys(dict).filter((key) => dict[key] === 3).length === 1 &&
    Object.keys(dict).filter((key) => dict[key] === 2).length === 1
  ) {
    return 3;
  }

  // 3
  if (Object.keys(dict).filter((key) => dict[key] === 3).length === 1) {
    return 4;
  }

  // 2 + 2
  if (Object.keys(dict).filter((key) => dict[key] === 2).length === 2) {
    return 5;
  }

  // 2
  if (Object.keys(dict).filter((key) => dict[key] === 2).length === 1) {
    return 6;
  }

  return 7;
}

// Part 2
// ======

function part2(input) {
  const lines = input.replaceAll("\r", "").split("\n");
  const hands = lines.map((line) => line.split(" "));

  const sortedHands = hands.sort((a, b) => {
    const handA = calculateHandValuePart2(a[0]);
    const handB = calculateHandValuePart2(b[0]);

    if (handA > handB) {
      return -1;
    } else if (handA < handB) {
      return 1;
    } else {
      for (let i = 0; i < 5; i++) {
        const handACard = convertToNumberPart2(a[0].split("")[i]);
        const handBCard = convertToNumberPart2(b[0].split("")[i]);
        if (handACard > handBCard) {
          return 1;
        } else if (handACard < handBCard) {
          return -1;
        }
      }
    }
  });

  return sortedHands
    .filter((hand) => hand[0] != "")
    .reduce((acc, hand, i) => {
      console.log(acc, hand, i + 1);
      return acc + hand[1] * (i + 1);
    }, 0);
}

function convertToNumberPart2(card) {
  switch (card) {
    case "A":
      return 14;
    case "K":
      return 13;
    case "Q":
      return 12;
    case "J":
      return 1;
    case "T":
      return 10;
    default:
      return parseInt(card);
  }
}

function calculateHandValuePart2(hand) {
  const dict = {};

  let jokers = 0;

  hand.split("").forEach((card) => {
    if (card === "J") {
      jokers += 1;
      return;
    }
    if (dict[card]) {
      dict[card] += 1;
    } else {
      dict[card] = 1;
    }
  });

  // 5
  if (jokers === 5 || Object.keys(dict).length === 1) {
    return 1;
  }

  // 4
  if (
    jokers === 4 ||
    (jokers === 3 &&
      Object.keys(dict).filter((key) => dict[key] === 1).length >= 1) ||
    (jokers === 2 &&
      Object.keys(dict).filter((key) => dict[key] === 2).length === 1) ||
    (jokers === 1 &&
      Object.keys(dict).filter((key) => dict[key] === 3).length === 1) ||
    Object.keys(dict).filter((key) => dict[key] === 4).length === 1
  ) {
    return 2;
  }

  // 3 + 2
  if (
    (Object.keys(dict).filter((key) => dict[key] === 3).length === 1 &&
      Object.keys(dict).filter((key) => dict[key] === 2).length === 1) ||
    (Object.keys(dict).filter((key) => dict[key] === 2).length === 2 &&
      jokers === 1)
  ) {
    return 3;
  }

  // 3
  if (
    Object.keys(dict).filter((key) => dict[key] === 3).length === 1 ||
    (Object.keys(dict).filter((key) => dict[key] === 2).length === 1 &&
      jokers === 1) ||
    (Object.keys(dict).filter((key) => dict[key] === 1).length >= 1 &&
      jokers === 2) ||
    jokers === 3
  ) {
    return 4;
  }

  // 2 + 2
  if (
    Object.keys(dict).filter((key) => dict[key] === 2).length === 2 ||
    (Object.keys(dict).filter((key) => dict[key] === 2).length === 1 &&
      jokers === 1)
  ) {
    return 5;
  }

  // 2
  if (
    Object.keys(dict).filter((key) => dict[key] === 2).length === 1 ||
    jokers
  ) {
    return 6;
  }

  return 7;
}

export default { part1, part2 };

[–] [email protected] 2 points 2 years ago* (last edited 2 years ago)

top left of the site in the navbar, and for sites who collect all of the different instances such as join-lemmy and lemmyverse. Also shows up in things like error pages in the new frontend

Smaller in the navbar but in the cases of join-lemmy and the things like error pages its larger (you can see the size by going to https://join-lemmy.org/instances?topic=all_topics&language=all&scroll=true)

[–] [email protected] 2 points 2 years ago

Uses typescript but can be used for both js and ts, I make bots in Javascript using it

[–] [email protected] 2 points 2 years ago* (last edited 2 years ago)

[JavaScript] Relatively easy one today

Paste

Part 1

function part1(input) {
  const split = input.split("\n");
  const times = split[0].match(/\d+/g).map((x) => parseInt(x));
  const distances = split[1].match(/\d+/g).map((x) => parseInt(x));

  let sum = 0;

  for (let i = 0; i < times.length; i++) {
    const time = times[i];
    const recordDistance = distances[i];

    let count = 0;

    for (let j = 0; j < time; j++) {
      const timePressed = j;
      const remainingTime = time - j;

      const travelledDistance = timePressed * remainingTime;

      if (travelledDistance > recordDistance) {
        count++;
      }
    }

    if (sum == 0) {
      sum = count;
    } else {
      sum = sum * count;
    }
  }

  return sum;
}

Part 2

function part2(input) {
  const split = input.split("\n");
  const time = parseInt(split[0].split(":")[1].replace(/\s/g, ""));
  const recordDistance = parseInt(split[1].split(":")[1].replace(/\s/g, ""));

  let count = 0;

  for (let j = 0; j < time; j++) {
    const timePressed = j;
    const remainingTime = time - j;

    const travelledDistance = timePressed * remainingTime;

    if (travelledDistance > recordDistance) {
      count++;
    }
  }

  return count;
}

Was a bit late with posting the solution thread and solving this since I ended up napping until 2am, if anyone notices theres no solution thread and its after the leaderboard has been filled (can check from the stats page if 100 people are done) feel free to start one up (I just copy paste the text in each of them)

[–] [email protected] 5 points 2 years ago* (last edited 2 years ago) (2 children)

Theres a lot of different frameworks to use for creating them

The most popular one is lemmy-bot which uses js (and has descriptions for how to use it on the page)

Theres also one in python though here with a couple examples in its repo

 

The bot api got updated so updated my rss feed bot to V0.18 as well

It auto posts new things from rss feeds into communities. I currently have it set up in [email protected] [email protected] and [email protected] posting official news from the engines and some other people are using it as well (one having adapted it to post news from their city)

If you want to set it up and are having issues feel free to ask me about it.

In this update theres also some other things about the bot that have changed

  • Data is now pulled from a yaml file so its easier to deal with as opposed to digging through the javascript code in order to change stuff
  • Important values such as how long the bot will wait before checking for new posts have been parameterized
  • You can now post things that are in two rss feeds or in one rss feed but not another if you want to filter posts down a bit more
  • You can set a date cutoff for how long ago you want to backpost posts from
 
 

Prop Game, Chelesste, 3D Adventure Minigolf, Astrobrawl, Aether, AXIAL: Prototype, Barkelona, Knights of the Road, Bunker 21 Extended Edition

 

cross-posted from: https://programming.dev/post/653659

The theme of the game jam voted on by participants is Parallel Worlds

Feel free to share progress of games you're working for it around the fediverse. We have a hashtag on the microblogging platforms #FediverseJam and there are engine specific communities like godot, unity, unreal, etc. that you can find on programming.dev

The jam will last for nine days before submissions to the itch.io page close https://itch.io/jam/summer-fediverse-jam

Ill be streaming games submitted to the jam and will do a video showcasing the entries once results are out

Hope you enjoy! Ill be aiming to run these twice a year as a way to encourage some more game dev activity around the fediverse

 

cross-posted from: https://programming.dev/post/653659

The theme of the game jam voted on by participants is Parallel Worlds

Feel free to share progress of games you're working for it around the fediverse. We have a hashtag on the microblogging platforms #FediverseJam and there are engine specific communities like godot, unity, unreal, etc. that you can find on programming.dev

The jam will last for nine days before submissions to the itch.io page close https://itch.io/jam/summer-fediverse-jam

Ill be streaming games submitted to the jam and will do a video showcasing the entries once results are out

Hope you enjoy! Ill be aiming to run these twice a year as a way to encourage some more game dev activity around the fediverse

31
submitted 2 years ago* (last edited 2 years ago) by [email protected] to c/[email protected]
 

The theme of the game jam voted on by participants is Parallel Worlds

Feel free to share progress of games you're working for it around the fediverse. We have a hashtag on the microblogging platforms #FediverseJam and there are engine specific communities like godot, unity, unreal, etc. that you can find on programming.dev

The jam will last for nine days before submissions to the itch.io page close https://itch.io/jam/summer-fediverse-jam

Ill be streaming games submitted to the jam and will do a video showcasing the entries once results are out

Hope you enjoy! Ill be aiming to run these twice a year as a way to encourage some more game dev activity around the fediverse

3
submitted 2 years ago* (last edited 2 years ago) by [email protected] to c/[email protected]
 

The community currently has no mods (as the person who requested it in the request community did not want to mod it).

If anyone wants to be a mod feel free to dm me or reply here

view more: ‹ prev next ›