Skip to content

Latest commit

 

History

History
129 lines (106 loc) · 2.76 KB

File metadata and controls

129 lines (106 loc) · 2.76 KB

Examples

Character Frequency Grouping

let char = "0";
1..100000
| map(string(#))
| groupBy(split(#, char) | len() - 1)
| toPairs()
| map({{
    count: #[0], 
    len: len(#[1]), 
    examples: [first(#[1]), last(#[1])],
 }})
| sortBy(.len, 'desc')

Log Filtering and Aggregation

let logs = [
  {timestamp: date("2023-08-14 08:30:00"), message: "User logged in", level: "info"},
  {timestamp: date("2023-08-14 09:00:00"), message: "Error processing payment", level: "error"},
  {timestamp: date("2023-08-14 10:15:00"), message: "User logged out", level: "info"},
  {timestamp: date("2023-08-14 11:00:00"), message: "Error connecting to database", level: "error"}
];

logs
| filter(.level == "error")
| map({{
    time: string(.timestamp),
    detail: .message
 }})
| sortBy(.time)

Financial Data Analysis and Summary

let accounts = [
  {name: "Alice", balance: 1234.56, transactions: [100, -50, 200]},
  {name: "Bob", balance: 2345.67, transactions: [-200, 300, -150]},
  {name: "Charlie", balance: 3456.78, transactions: [400, -100, 50]}
];

{
  totalBalance: sum(accounts, .balance),
  averageBalance: mean(map(accounts, .balance)),
  totalTransactions: reduce(accounts, #acc + len(.transactions), 0),
  accounts: map(accounts, {{
      name: .name,
      final: .balance + sum(.transactions),
      transactionCount: len(.transactions)
  }})
}

Bitwise Operations and Flags Decoding

let flags = [
  {name: "read", value: 0b0001},
  {name: "write", value: 0b0010},
  {name: "execute", value: 0b0100},
  {name: "admin", value: 0b1000}
];

let userPermissions = 0b1011;

flags
| filter(userPermissions | bitand(.value) != 0)
| map(.name)

Nested Predicates with Optional Chaining

let users = [
  {id: 1, name: "Alice", posts: [{title: "Hello World", content: "Short post"}, {title: "Another Post", content: "This is a bit longer post"}]},
  {id: 2, name: "Bob", posts: nil},
  {id: 3, name: "Charlie", posts: [{title: "Quick Update", content: "Update content"}]}
];

users
| filter(
    // Check if any post has content length greater than 10.
    any(.posts ?? [], len(.content) > 10)
  )
| map({{name: .name, postCount: len(.posts ?? [])}})

String Manipulation and Validation

"  Apple, banana, Apple, orange, banana, kiwi "
| trim()
| split(",")
| map(trim(#))
| map(lower(#))
| uniq()
| sort()
| join(", ")

Date Difference

let startDate = date("2023-01-01");
let endDate = date("2023-12-31");
let diff = endDate - startDate;
{
  daysBetween: diff.Hours() / 24,
  hoursBetween: diff.Hours()
}

Phone number filtering

let phone = filter(split("123-456-78901", ""), # in map(0..9, string(#)))[:10];
join(concat(["("], phone[:3], [")"], phone[3:6], ["-"], phone[6:]))

Prime numbers

2..1000 | filter(let N = #; none(2..N-1, N % # == 0))